Python int float rounding

时间:2013-03-02 21:56:48

标签: python casting integer rounding

在玩python时,我遇到了这个:

a = 1/(2.2 - 2)

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

我怀疑问题与二进制数表示有关(在二进制中表示1/5等于表示十进制的1/3)。有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分: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'