Python 整数 浮点数 舍入
在玩Python的时候,我遇到了这个:
a = 1/(2.2 - 2)
print a #prints out 5.0
print int(a) #prints out 4
我怀疑这个问题和二进制数字表示有关(把1/5用二进制表示就像把1/3用十进制表示一样)。有没有人能帮我解释一下这个问题?
1 个回答
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'