我如何将数字下限到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


我希望先前的计算返回9.4。

我怎样才能解决这个问题?

最佳答案

这是因为浮点格式-请注意9.6/0.2返回47.9999999...

一些四舍五入将达到目的:

round(0.2*np.floor(round(xi / 0.2,2)),1)


内部舍入为小数点后2位,以确保您不会失去精度,但仍然需要舍弃。
外部舍入为-因此您将对0.2进行适当舍入(而不是例如9.6000...1

关于python - 地板到numpy的0.2的最接近倍数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60470225/

10-12 18:47