PDA

Просмотр полной версии : [Function] DelZero(Float:floatval)



Salvacore
29.10.2013, 20:43
На "офе" ope задал вопрос:
Функция возвращает число с плавающей точкой. Вопрос: как отрезать ненужные нули? Например я получил 15.140, нужно чтобы осталось только 15.14, или через эту же функцию я получил 1.200 -нужно оставить только 1.2. В совершенстве еще хотелось бы узнать, - как точку в таком числе заменить на запятую?

Функция:

stock DelZero(Float:floatval)
{
new string[8];
format(string, sizeof(string), "%f", floatval);
new dotpos = strfind(string, ".");
strdel(string, dotpos, dotpos + 1);
strins(string, ",", dotpos, sizeof(string));
for(new i = strlen(string); i != dotpos + 1; i--)
{
if(strcmp(string[i], "0") != 0) break;
strdel(string, i, i + 1);
}
return string;
}

Работает только с положительными числами, отсутствует проверка на MAXFLOAT, но думаю, она бессмысленна, т.к. обрабатывается только 5 знаков после точки (запятой). С отрицательными числами почему-то фигня: отнимает 1 единицу разряда только.


main()
{
new Float:d = 1.20500;
printf("%s", DelZero(d));
}