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