Python int()工作不正常

Python int()工作不正常,python,int,rounding,Python,Int,Rounding,我在python 2.7.9中尝试了以下代码: a=8.52 for i in range(1,3): a *= 10.0 print int (a) 它应该显示 85 852 但它显示了 85 851 你知道为什么吗?这是已知的错误吗 你知道为什么吗?这是已知的错误吗 明显的print调试方法产生: a=8.52 for i in range(1,3): a *= 10.0 print int (a) print a 其中打印: 85 851 851.9

我在python 2.7.9中尝试了以下代码:

a=8.52
for i in range(1,3):
    a *= 10.0
    print int (a)
它应该显示

85
852
但它显示了

85
851
你知道为什么吗?这是已知的错误吗

你知道为什么吗?这是已知的错误吗

明显的
print
调试方法产生:

a=8.52
for i in range(1,3):
    a *= 10.0
    print int (a)
print a
其中打印:

85
851
851.99999...

这里发生的是浮点数学。它不精确,因为没有确切的方法用二进制浮点表示
8.51
。相反,一个非常接近(但更小)8.51的值首先存储在
a
a*10
85.19999999999
@Zach,它一文不值。如果你刚刚开始,几乎可以保证永远不会在语言中发现bug。从这个意义上讲,这种语言非常成熟。我理解这个经常被问到的问题的结尾,但我认为反对票是严厉的。OP认为问题出在
int
上,因此对谷歌搜索正确的术语准备不足,无法找到答案。@史蒂文鲁巴斯基的观点是我回答的原因:首先,让OP有机会自己搜索,其次,提供典型的调试步骤谢谢你的回答。然而,如果我打印“int(a*100)”,我会得到“852”。这不应该是同样的结果吗?(同样,如果我在末尾添加“print a”,我得到的是“852”,而不是“851.999…”不,结果应该不一样。如果你在末尾得到了852,那么你的python 2.7.9就a)坏了,b)行为与我的python 2.7.9不同。