Ошибка с плавающей точкой в ​​представлении? - PullRequest
0 голосов
/ 28 сентября 2011

когда я делаю это умножение

0,94 *8700* 1004 *

вывод

8177,999999999999

но это должно было быть

8178

Я использую Java, но я не думаю, что эта ошибка связана с конкретным языком программирования теперь мой вопрос ... почему это произошло ??
а какие другие цифры (просто в качестве примера) вызывают такую ​​же ошибку?

Ответы [ 2 ]

5 голосов
/ 28 сентября 2011

Конкретная причина в вашем случае состоит в том, что действительное число 0,94 не может быть представлено точно в плавающей запятой двойной точности.Когда вы набираете 0.94, фактическое число сохраняется 0.939999999999999946709294817992486059665679931640625.

0 голосов
/ 28 сентября 2011

Это не ошибка.IEEE не может точно представлять десятичные числа.

...