Python でのほぼ等しいかどうかの浮動小数点の比較: 詳細
潜在的な丸めと精度の問題により、浮動小数点数が完全に等しいかどうかを比較します。 Python は難しい場合があります。これは、Bruce Dawson のブログ投稿「Comparing Floating Point Numbers, 2012 Edition」で強調されているように、よく知られている問題です。 Python でこの課題に効果的に対処するには、いくつかのアプローチが考えられます。
標準ライブラリ関数
Python 3.5 では math.isclose() と cmath.isclose() が導入されました。この関数は、浮動小数点を許容レベルと比較するために特別に設計されています。これらの関数は 3 つの引数を受け入れます:
a と b の間の絶対差が rel_tol * max(abs(a), abs(b)) または abs_tol のいずれかより小さい場合、値は等しいとみなされます。
以前の Python バージョン用のカスタム関数
以前の Python バージョンを使用している場合3.5 よりも前のバージョンでは、ドキュメントで提供されている次のコード スニペットに基づいて独自の isclose() 関数を実装できます。
def isclose(a, b, rel_tol=1e-09, abs_tol=0.0): return abs(a - b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
このカスタム関数は、標準ライブラリ関数と同じ機能を提供し、float を比較できます。指定された許容範囲内にあります。
以上がPython で浮動小数点数を正確に比較してほぼ等しいかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。