Python列表中的浮动偏差

0 投票
1 回答
725 浏览
提问于 2025-04-17 02:00

可能是重复的问题:
Python浮点数 - 字符串 - 浮点数的奇怪现象

我在codepad.org上运行了以下代码:

num = 1.6
print num
list = [num]
print list
num2 = list[0]
print num2

然后我得到了以下输出:

1.6
[1.6000000000000001]
1.6

为什么列表中会有这么小的偏差呢?

1 个回答

3

list.__str__ 会对列表中的每个元素调用 repr 方法,而打印的时候则调用 str 方法:

>>> str(1.6)
'1.6'
>>> repr(1.6)
'1.6000000000000001'

因为浮点数不一定是精确的(对于那些不能用 * 2b 表示的整数 a,b,浮点数就无法精确表示),所以这两种表示方式都是正确的,换句话说:

>>> 1.6 == 1.6000000000000001
True

撰写回答