2013-03-02 71 views
4

虽然与蟒蛇玩,我碰到这样的:Python的INT浮动四舍五入

a = 1/(2.2 - 2) 

print a  #prints out 5.0 
print int(a) #prints out 4 

我怀疑问题有表达1/3是与二进制数表示(1/5表示二进制无异以十进制表示)。有人可以澄清这一点吗?

回答

4

你对你的怀疑是完全正确的。根本原因是2.2不能精确表示为float:从这个

In [38]: '%.20f' % 2.2 
Out[38]: '2.20000000000000017764' 

其余如下:

In [45]: '%.20f' % (2.2 - 2) 
Out[45]: '0.20000000000000017764' 

In [46]: '%.20f' % (1/(2.2 - 2)) 
Out[46]: '4.99999999999999555911' 
+0

感谢澄清,这是值得拥有的初衷。 – asdf 2013-03-02 22:56:16