Python 为什么append()会附加不正确的数据?

Python 为什么append()会附加不正确的数据?,python,append,Python,Append,我不是在寻找我的代码的修复程序,我想了解是什么机制导致我的列表周期性地填充不正确的数据 x = [] h = 0.01 for i in range(101): x.append(1+i*h) print x """ ~$ python ~/dev/python/inf1100/coor1.py [1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14000000

我不是在寻找我的代码的修复程序,我想了解是什么机制导致我的列表周期性地填充不正确的数据

x = []
h = 0.01

for i in range(101):
    x.append(1+i*h)

print x

"""
~$ python ~/dev/python/inf1100/coor1.py 
[1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.13, 1.1400000000000001, 1.15, 1.16, 1.17, 1.18, 1.19, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3, 1.31, 1.32, 1.33, 1.34, 1.35, 1.3599999999999999, 1.37, 1.38, 1.3900000000000001, 1.4, 1.4100000000000001, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5, 1.51, 1.52, 1.53, 1.54, 1.55, 1.56, 1.57, 1.58, 1.5899999999999999, 1.6, 1.6099999999999999, 1.62, 1.63, 1.6400000000000001, 1.65, 1.6600000000000001, 1.67, 1.6800000000000002, 1.69, 1.7000000000000002, 1.71, 1.72, 1.73, 1.74, 1.75, 1.76, 1.77, 1.78, 1.79, 1.8, 1.81, 1.82, 1.83, 1.8399999999999999, 1.85, 1.8599999999999999, 1.87, 1.88, 1.8900000000000001, 1.9, 1.9100000000000001, 1.92, 1.9300000000000002, 1.94, 1.9500000000000002, 1.96, 1.97, 1.98, 1.99, 2.0]
"""
当检查打印的数字列表时,观察者注意到列表中预期出现的数字1.14不存在,而是找到了浮动1.140000000000001

在整个列表中,这种情况会发生多次


发生这种情况的原因是什么?

这与浮点数表示有关。有一个最大精度,或可用的位数来表示数字,所以有些东西无法精确显示。输入了正确的数字


数字1.140000000000001是使用标准python浮点的1.14最接近的表示形式。

这与浮点数字表示形式有关。有一个最大精度,或可用的位数来表示数字,所以有些东西无法精确显示。输入了正确的数字


数字1.140000000000001是使用标准python浮点的1.14最接近的表示形式。

可能的@Femaref副本:我们至少可以将其保留在python主题中吗?另请参阅以获取更多信息。。用开玩笑的方式回答这个问题。可能重复@Femaref:我们至少可以把这个话题保留在Python主题中吗?另请参阅以获得更多。。用开玩笑的方式回答这个问题。