Вопрос про float
#1

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

strval(inputtext) = 31499

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

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)