【发布时间】:2017-05-11 09:42:57
【问题描述】:
Numpy Float32 值根据是在数组内部启动还是作为独立的 float32 启动而有所不同:
>>> numpy.array([75.09], dtype="float32")
array([ 75.08999634], dtype=float32)
>>> numpy.float32(75.09)
75.089996
我需要能够在数组中搜索 float32 值。由于最后两个额外数字,当前未找到值。我也试过:
>>> numpy.array([75.09], dtype="float32").round(decimals=6)
array([ 75.08999634], dtype=float32)
还有:
>>> numpy.around(numpy.array([75.09], dtype="float32"), decimals=6)
array([ 75.08999634], dtype=float32)
但是你可以看到输出仍然包含最后两位数字。
【问题讨论】:
-
结果也可能令人惊讶,因为 IEEE 浮点标准中的小数表示不精确
-
标量和数组版本没有区别。您只是没有以足够的精度打印标量值。请注意,比较浮点数是一项有风险的业务。请改用
np.isclose或np.allclose