parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

moko 19.03 22:46

Парсер пользуется функциями стандартной библиотеки C++,
для форматирования чисел используется printf.

Да, этот метод себя так ведет.
$d(3473.225)
$d = ^eval($d)[%.2f] = ^d.format[%.16f]
$d(3473.235)
$d = ^eval($d)[%.2f] = ^d.format[%.16f]
Выведет:
3473.225 = 3473.22 = 3473.2249999999999091
3473.235 = 3473.24 = 3473.2350000000001273
Например тут есть объяснения:

https://linuxgazette.net/144/misc/lg/a_question_of_rounding_in_issue_143.html
Но тогда вопрос, как правильно работать. Всегда делать округление самостоятельно?
Насколько понимаю, главное везде пользоваться одинаковыми методами. Либо все форматировать, либо все округлять.