地板到numpy中最接近0.2的倍数?
Flooring to nearest multiple of 0.2 in numpy?
如何在 numpy 中将数字下限到最接近的 0.2 的倍数?
例如,我有这个:
0.2 * np.floor(xi / 0.2)
大部分时间都有效,例如
>>> xi = 9.4
>>> 0.2 * np.floor(xi / 0.2)
9.4
但是,它对某些数字失败,例如 9.6
>>> xi = 9.6
>>> 0.2 * np.floor(xi / 0.2)
9.4
我希望之前的计算结果为 return 9.4。
我该如何解决这个问题?
使用np.round
0.2 * np.round(xi / 0.2)
输出:
9.600000000000001
额外的一点是由于浮点数学。
这是因为 float 格式 - 注意 9.6/0.2
returns 47.9999999...
.
在这里和那里进行一些舍入就可以了:
round(0.2*np.floor(round(xi / 0.2,2)),1)
内部四舍五入保留 2 位小数,以确保您不会失去精度,并且仍然会有一些不足之处。
外圆是 - 所以你将有适当的四舍五入到 0.2
(而不是例如 9.6000...1
)
如何在 numpy 中将数字下限到最接近的 0.2 的倍数?
例如,我有这个:
0.2 * np.floor(xi / 0.2)
大部分时间都有效,例如
>>> xi = 9.4
>>> 0.2 * np.floor(xi / 0.2)
9.4
但是,它对某些数字失败,例如 9.6
>>> xi = 9.6
>>> 0.2 * np.floor(xi / 0.2)
9.4
我希望之前的计算结果为 return 9.4。
我该如何解决这个问题?
使用np.round
0.2 * np.round(xi / 0.2)
输出:
9.600000000000001
额外的一点是由于浮点数学。
这是因为 float 格式 - 注意 9.6/0.2
returns 47.9999999...
.
在这里和那里进行一些舍入就可以了:
round(0.2*np.floor(round(xi / 0.2,2)),1)
内部四舍五入保留 2 位小数,以确保您不会失去精度,并且仍然会有一些不足之处。
外圆是 - 所以你将有适当的四舍五入到 0.2
(而不是例如 9.6000...1
)