numpy.arangeで思った数列が作成できません。
初めて質問を投稿させていただくため、分かりずらい表現がありましたらご指摘いただけると幸いです。
やりたいこと
3.0から4.35まで0.05刻みの等差数列を作りたいです。numpy.arangを使って数列を作ろうとしても、pythonの丸め誤差で誤った判定がされ4.35を超えた数列が作られてしまいます。
発生している問題・エラー
数列を表示するコード
for i in np.arange(3.0, 4.4, 0.05):
print(i)
上コードの出力です。4.35で止まっていないことに悩んでいます。
3.0
3.05
3.0999999999999996
...
4.249999999999996
4.299999999999995
4.349999999999995
4.399999999999995
numpy.arangeのドキュメンテーションにも
arange(start, stop, step) Values are generated within the half-open interval [start, stop), with spacing between values given by step.
とあり、stopは含まない半区間で等差数列を作成するとありました。しかし、恐らく丸目誤差で4.399999999999995は4.4を超えていないと判定されてしまっています。この問題はどのように解決すればいいでしょうか。
自分で試したこと
for i in np.arange(3.0, 4.4, 0.05):
if i>4.35:
break
print(i)
このように自分で恣意的にbreakさせれば思った挙動をするのですが、他の工夫で解決できるでしょうか。ご教授いただきたいです。
0