//围绕结果如何?

时间:2016-05-09 09:43:25

标签: python operators rounding

我在python中面对//运算符的(对我而言)奇怪的行为。

当我计算时,例如5.//0.25我成为了正确的结果,即

>>> 5.//0.25
20.0

但是

>>> 5.//0.2
24.0

而不是

>>> math.floor(5./0.2)
25

任何人都能解释一下这个结果吗?为什么// 24.0的结果?

编辑:给定的链接Is floating point math broken?并没有详尽地回答这个问题。事实上,有了这个答案,人们就无法理解为什么正常分界的底线会给出正确的结果。真正的答案应该解释//如何工作,正如评论中的polku所做的那样

也许我必须从头开始写这个:为什么会发生这种情况?

>>> print('%.17f' % (5./0.20000000298023224))
24.99999962747097726
>>> print('%.17f' % (5./0.2))
25.00000000000000000

EDIT2:这个问题应该重新打开,因为在建议的重复问题中没有给出答案,而是@ polku的评论。

0 个答案:

没有答案