0
import numpy as np

n = 10
xmin = 0
xmax = 1
dx = 1/n
x = np.arange(xmin-dx, xmax + 2*dx, dx)
print(x)
print(x <= 0.3)

此代码的输出如下:

[-0.1  0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.   1.1]
[ True  True  True  True False False False False False False False False
 False]

为什么数组中值为 0.3 的元素不小于或等于 0.3?​我对其他比较进行了同样的尝试,我发现 -0.1 <= -0.1 和 0.1 <= 0.1 而 0.2 不小于或等于 0.2。真的不明白这里发生了什么。

4

1 回答 1

0

我知道了。永远不要比较浮点数,因为舍入误差。这将起作用:

print(x <= 0.3 + np.finfo(np.float64).eps)
于 2020-04-17T16:48:04.377 回答