np.arange(1,-1,-1)
产量
array([1, 0])
正如所料。
np.arange(1,-1,-0.5)
Out[8]: array([ 1. , 0.5, 0. , -0.5]
再一次都很好。
np.arange(1,-1,-0.2)
Out[10]:
array([1.00000000e+00, 8.00000000e-01, 6.00000000e-01,
4.00000000e-01, 2.00000000e-01, 2.22044605e-16,
-2.00000000e-01, -4.00000000e-01, -6.00000000e-01,
-8.00000000e-01])
应该为零的元素发生了什么?
与
相同np.arange(1,-1,-0.1)
Out[11]:
array([1.00000000e+00, 9.00000000e-01, 8.00000000e-01,
7.00000000e-01, 6.00000000e-01, 5.00000000e-01,
4.00000000e-01, 3.00000000e-01, 2.00000000e-01,
1.00000000e-01, 2.22044605e-16, -1.00000000e-01,
-2.00000000e-01, -3.00000000e-01, -4.00000000e-01,
-5.00000000e-01, -6.00000000e-01, -7.00000000e-01,
-8.00000000e-01, -9.00000000e-01])
这绝对不可取,但这是预期的行为吗?
答案 0 :(得分:1)
你的零元素是他们期望的。他们只是在某种程度上代表,你没想到。
2.22044605e-16
是一个用scientific notation写的数字,等于0.000000000000000222044605
,差不多是0.你可以阅读更多关于浮点的压痕numbers here
答案 1 :(得分:1)
答案是非常期待的。由于位数有限,浮点数精度不能精确。我认为这个问题已经出现在这里,并得到了回答,例如: https://stackoverflow.com/a/5160355/3115901