Python 为什么在for循环中迭代时的值与打印整个数组时的值不同?
在Python中,使用numpy时,在迭代过程中打印值或打印整个数组时,值会发生变化,为什么,如何解决这个问题?我希望它们是例如0.8而不是0.79999999Python 为什么在for循环中迭代时的值与打印整个数组时的值不同?,python,numpy,Python,Numpy,在Python中,使用numpy时,在迭代过程中打印值或打印整个数组时,值会发生变化,为什么,如何解决这个问题?我希望它们是例如0.8而不是0.79999999 >>> import numpy as np >>> b = np.arange(0.5,2,0.1) >>> for value in b: ... print(value) ... 0.5 0.6 0.7 0.7999999999999999 0.89999999999
>>> import numpy as np
>>> b = np.arange(0.5,2,0.1)
>>> for value in b:
... print(value)
...
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999
1.1999999999999997
1.2999999999999998
1.4
1.4999999999999998
1.5999999999999996
1.6999999999999997
1.7999999999999998
1.8999999999999997
>>> print(b)
[0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9]
>>>
之所以会出现这种情况,是因为Python和NumPy在某些数字(如0.1)无法精确表示的情况下使用。 也检查一下 您可以使用Numpy的np.around实现以下目的: >>b=np.aroundb,1第一个参数是np数组,第二个参数是小数点的数量 >>对于b中的值: 打印值 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
您可以使用round来获得整数
for value in b:
print(round(value,2))
要打印,可以使用打印格式-%.1f >>>对于b中的值: ... 打印%.1f%值 ... 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
我认为,ndarray的方法uu str_uu_u_u_u_uu_u_u)就是这样实现的。当你使用 版图 调用函数_str_uu是为了可读性。在这次通话中,您在Ndaray上进行操作。当您在for循环中进行打印时,使用float number的_str__;按原样打印数字 希望这是清楚的,但实际上可以有所帮助
:这只是数字在列表中的显示方式以及它们各自的近似值,一旦添加到列表中,我认为您担心的是您会失去精度。