Python 3.x 将numpy.arange()转换为list后更改的值

Python 3.x 将numpy.arange()转换为list后更改的值,python-3.x,numpy,Python 3.x,Numpy,在spyder3(python3.7)中将numpy.arange数组转换为列表时,值会发生变化 例如,我用np.arange(0.4,2,0.3)创建了一个数组,输出如下,这是正常的: Out[233]: array([0.4, 0.7, 1. , 1.3, 1.6, 1.9]) 但是当用列表(np.arange(0.4,2,0.3))转换它时,输出变成: Out[234]: [0.4, 0.7, 0.9999999999999999, 1.2999999999999998, 1

在spyder3(python3.7)中将numpy.arange数组转换为列表时,值会发生变化

例如,我用
np.arange(0.4,2,0.3)
创建了一个数组,输出如下,这是正常的:

Out[233]: array([0.4, 0.7, 1. , 1.3, 1.6, 1.9]) 
但是当用
列表(np.arange(0.4,2,0.3))
转换它时,输出变成:

Out[234]: 
[0.4,
 0.7,
 0.9999999999999999,
 1.2999999999999998,
 1.5999999999999996,
 1.8999999999999995]

那有什么问题?这是一个bug还是什么?

这是预期的行为。从文档中:

使用非整数步长(如0.1)时,结果通常不一致。对于这些情况,最好使用numpy.linspace


谢谢这让我困惑了一段时间。但即使使用
linspace
也可以得到
1.6
这样的值,根据上下文显示为
1.59999…
numpy
显示四舍五入到合理公共级别的数组元素。列表独立显示每个元素。值没有改变,只是显示而已。