math.floor()和//会产生不同的结果



在Python 3.4中,我希望操作math.floor()//产生相同的结果。他们没有。

import math
n=20844627638611523
print (math.floor(n/2))
print (n//2)

打印:

10422313819305762
10422313819305761

为什么?

问题出在表达式n/2中。这将返回一个浮点1.0422313819305762e+16——您在最后一个数字中丢失了一点精度。有了这种损失,您随后的floor操作将返回意外的结果。

最新更新