ホームページ >バックエンド開発 >Python チュートリアル >Python で浮動小数点数を正確に比較してほぼ等しいかどうかを確認するにはどうすればよいですか?

Python で浮動小数点数を正確に比較してほぼ等しいかどうかを確認するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-22 19:24:11673ブラウズ

How Can I Accurately Compare Floating-Point Numbers for Near-Equality in Python?

Python でのほぼ等しいかどうかの浮動小数点の比較: 詳細

潜在的な丸めと精度の問題により、浮動小数点数が完全に等しいかどうかを比較します。 Python は難しい場合があります。これは、Bruce Dawson のブログ投稿「Comparing Floating Point Numbers, 2012 Edition」で強調されているように、よく知られている問題です。 Python でこの課題に効果的に対処するには、いくつかのアプローチが考えられます。

標準ライブラリ関数

Python 3.5 では math.isclose() と cmath.isclose() が導入されました。この関数は、浮動小数点を許容レベルと比較するために特別に設計されています。これらの関数は 3 つの引数を受け入れます:

  • a および b: 比較される浮動小数点値
  • rel_tol (オプション): 相対許容誤差。これは、より大きい値に適用される係数です。許容差を定義する a と b
  • abs_tol (オプション): 最小差を設定する絶対許容誤差しきい値

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。