numpyの0.2の最も近い倍数にフローリング?

ショウガ :

どうすればフロアは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を返すことを期待します。

私はこれをどのように修正することができますか?

グジェゴシSkibinski:

なお、 - float形式からです9.6/0.2戻ります47.9999999...

いくつかは、ここで丸めとトリックが行います。

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

インナー丸めは必ず精度を失うことはありません作るために、小数点以下2桁で、まだ床に何かを持っています。外側のラウンドは-あなたが適切に丸めていますので0.2(例えばとしません9.6000...1

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=18055&siteId=1