python中的浮点精度

Mar*_*k L -1 python floating-point

任何理由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
Run Code Online (Sandbox Code Playgroud)

更新:

对于任何想知道我如何获得我正在寻找的价值的人:

>>> c = b - floor(b)
Run Code Online (Sandbox Code Playgroud)

And*_*sen 7

你将在大约五分钟内面对:P

ceil(b)是4.0
b是3.320999999999998

所以ceil(b)-b应该是4.0 - 3.320999999999998.试着把它放在你的计算器中,你就会明白为什么c不等于0.321.

如果你想让c等于.321,你应该做b - floor(b).