Пользователь
- Сообщения
- 49
- Реакции
- 1
- Предупреждения
- 5
Вот есть число 567, как с него вывести вторую цифру? Спасибо.
abs(x)
while (x>100) x /= 10;
x %= 10;
server_print("***** %i", RECEIVE_CertainNumber(256, 2));
//iNumber - число.
//iCertain - цифра, которую требуется вывести.
RECEIVE_CertainNumber(const iNumber, const iCertain) {
new szBuffer[10];
num_to_str(iNumber, szBuffer, iCertain);
return str_to_num(szBuffer[iCertain - 1]);
}
***** 5
// iNum - число
// iCertrian - номер цифры по порядку (читаем слева на право)
// iRMinus - Выводить цифру отрицательной, если число отрицательно
GetCertainNumIntL(iNum, const iCertrian, const bool: iRMinus)
{
new bool: iMinus;
if (iNum < 0)
{
iMinus = true;
abs(iNum);
}
// 1000020000 -> | 20000 |
iNum %= power(10, iCertrian);
// 20000 -> | 2 |
while (iNum /= 10 > 10);
return (iRMinus && iMinus) ? -iNum : iNum;
}
// iNum - число
// iCertrian - номер цифры по порядку (читаем слева на право)
// iRMinus - Выводить цифру отрицательной, если число отрицательно
GetCertainNumIntStrL(iNum, const iCertrian, const bool: iRMinus)
{
new szBuffer[32], bool: iMinus;
if (iNum < 0)
{
iMinus = true;
abs(iNum);
}
num_to_str(iNum, szBuffer, iCertain);
iNum = str_to_num(szBuffer[iCertain - 1]);
return (iRMinus && iMinus) ? -iNum : iNum;
}
// iNum - число
// iCertrian - номер цифры по порядку (читаем справа на лево)
// iRMinus - Выводить цифру отрицательной, если число отрицательно
GetCertainNumIntR(iNum, const iCertrian, const bool: iRMinus)
{
new bool: iMinus;
if (iNum < 0)
{
iMinus = true;
abs(iNum);
}
// 1000020000 -> | 100002 |
iNum /= power(10, iCertrian - 1);
// 100002 -> | 2 |
iNum %= 10;
return (iRMinus && iMinus) ? -iNum : iNum;
}
// fNum - число
// iCertrian - номер цифры по порядку (читаем до запятой - справа на лево. после запятой - слева на право)
// iRMinus - Выводить цифру отрицательной, если число отрицательно
GetCertainNumFloat(Float: fNum, const iCertain, const bool: iRMinus)
{
new bool: iMinus, iNum;
if (fNum < 0)
{
iMinus = true;
floatabs(fNum);
}
if (iCertain < 0)
{
// 0,13251 -> | 251,0 |
fNum *= power(10, abs(iCertain));
/// 251,0 -> 251 -> 1
iNum = floatround(fNum, floatround_floor) % 10;
return (iRMinus && iMinus) ? -iNum : iNum;
}
// 1000020000,13251 -> | 1000020000 |
iNum = floatround(fNum, floatround_floor);
// 1000020000 -> | 100002 |
iNum /= power(10, iCertrian-1);
// 100002 -> 2
iNum %= 10;
return (iRMinus && iMinus) ? -iNum : iNum;
}