Python列表中的浮动偏差
可能是重复的问题:
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