SA-MP Forums Archive
Вопрос про float - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Вопрос про float (/showthread.php?tid=656150)



Вопрос про float - Josipo - 08.07.2018

Есть следующий код:

strval(inputtext) = 31499

format(string, sizeof(string), "%.2f$.", float(strval(inputtext)) / 100);
SendClientMessage(playerid, -1, string);

При выводе в чат вижу "314.98$".
Что за магия с округлением? Почему 99 становится 98?


Re: Вопрос про float - DrumYum - 08.07.2018

Насколько я понимаю, это особенности арифметики чисел с плавающей точкой
https://softwareengineering.stackexc...ounding-errors


Re: Вопрос про float - Stepashka - 09.07.2018

Ответ на вопрос выше правильно дали.
Однако, странный вы способ конвертирования используете, почему не использовать Floatstr?
Код бы выглядел элегантней:
pawn Code:
format(string, sizeof(string), "%.2f$.", floatstr(inputtext) / 100);
SendClientMessage(playerid, -1, string);
Или как вариант вообще ничего не конвертировать и работать со строкой, взять два последних символа и всё до него...