Python 在numpy arange上迭代会更改值
我用的是numpy arangePython 在numpy arange上迭代会更改值,python,numpy,Python,Numpy,我用的是numpy arange [In]测试=np.arange(0.01,0.2,0.02) [In]测试 [Out]阵列([0.01,0.03,0.05,0.07,0.09,0.11,0.13,0.15,0.17,0.19]) 但是,如果我迭代这个数组,它会迭代更小的值 [In]对于t In测试: .... 打印(t) [外] 0.01 0.03 0.049999999999999996 0.06999999999999999 0.08999999999999998 0.1099
[In]测试=np.arange(0.01,0.2,0.02)
[In]测试
[Out]阵列([0.01,0.03,0.05,0.07,0.09,0.11,0.13,0.15,0.17,0.19])
但是,如果我迭代这个数组,它会迭代更小的值
[In]对于t In测试:
.... 打印(t)
[外]
0.01
0.03
0.049999999999999996
0.06999999999999999
0.08999999999999998
0.10999999999999997
0.12999999999999998
0.15
0.16999999999999998
0.18999999999999997
为什么会这样
为了避免这个问题,我一直在舍入这些值,但这是解决这个问题的最佳方法吗
for t in test:
print(round(t, 2))
您是否尝试过:
test = np.arange(0.01, 0.2, 0.02, dtype=np.float32)
我认为评论中提到的浮点数的性质就是问题所在 如果你仍然认为你害怕这样做,我建议你将你的数字乘以100,然后使用整数:
test=np.arange(1,20,2)
打印(测试)
对于测试中的t:
打印(t/100)
这为我提供了以下输出:
[ 1 3 5 7 9 11 13 15 17 19]
0.01
0.03
0.05
0.07
0.09
0.11
0.13
0.15
0.17
0.19
或者,您也可以尝试以下操作:
test=np.arange(1,20,2)/100
也许这个答案可以帮助您: