Неправильный результат при сравнении чисел с плавающей запятой

GNU printf использует long double , в то время как zsh использует обычные double s . Поведение округления, которое вы видите, связано с тем, что (скажем) 1,45 не может быть представлено как сумма степеней двойки, как работает представление с плавающей запятой IEEE 754 , и ближайшее приближение зависит от точности . Это немного больше (с 80 битами) или меньше (с 64 битами), таким образом, округляя в большую или меньшую сторону, как вы видите.

Как всегда, если вы заботитесь о точном представлении и округлении на человеческом уровне, не используйте числа с плавающей запятой.

1
23.05.2017, 15:40
0 ответов

Теги

Похожие вопросы