Вопрос про 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);
Или как вариант вообще ничего не конвертировать и работать со строкой, взять два последних символа и всё до него...