Python 整数 浮点数 舍入

4 投票
1 回答
1058 浏览
提问于 2025-04-17 17:43

在玩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'

撰写回答