Точность с плавающей точкой в ​​Python - PullRequest
0 голосов
/ 21 ноября 2011

Любая причина, по которой c не должен равняться 0,321?

>>> from math import ceil
>>> a = 123.321
>>> b = a % 60
>>> b
3.320999999999998
>>> ceil(b)
4.0
>>> c = ceil(b) - b
>>> c
0.679000000000002

Обновление:

Для тех, кто хочет узнать, как я получил искомое значение:

>>> c = b - floor(b)

Ответы [ 2 ]

7 голосов
/ 21 ноября 2011

Вы собираетесь использовать лицевой щиток через пять минут: P

ceil (b) - 4,0
b - 3,320999999999998

Таким образом, ceil (b) - b должно быть 4.0 - 3.320999999999998.Попробуйте вставить это в свой калькулятор, и вы поймете, почему с не равно 0,321.

Если вы пытаетесь получить с равным 0,332, вам, вероятно, следует выполнить b - floor (b).

3 голосов
/ 21 ноября 2011

Ммм, потому что 4 - 3.321 - это .679?По крайней мере, это было, когда я учился в третьем классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...