我在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的评论。