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

Python で浮動小数点数が等しいかどうかを確実に比較するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-18 11:49:10
オリジナル
433 人が閲覧しました

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

Python での浮動小数点数の等価性の近似: 標準ライブラリ関数による救済

浮動小数点数の正確な等価性の比較には問題が生じる可能性があることは広く認識されています。浮動小数点精度の制限により、単純な等価性チェックの信頼性が低くなります。 Python でこの課題を克服するにはどうすればよいでしょうか?

Python の組み込みソリューション

Python バージョン 3.5 では、この目的のために 2 つの重要な関数 math.isclose と cmath.isclose が導入されました。 。これらの関数は、PEP 485 で定義されているように、精度関連の不一致を考慮しながら浮動小数点の堅牢な比較を可能にします。

isclose 関数

isclose 関数は、次の 3 つのパラメーターを受け取ります。

  • a と b: 対象となるフロート比較
  • rel_tol (オプション): 相対許容閾値
  • abs_tol (オプション): 絶対許容閾値

rel_tol は、許容される偏差のパーセンテージを表します。 a と b の大きさ。一方、abs_tol は、大きさに関係なく満たさなければならない絶対的なしきい値です。

許容差に関する考慮事項

この関数は、a と b の間の絶対的な差を比較します。 rel_tol * max(|a|, |b|) と abs_tol の両方に。差がこれらの値のいずれよりも小さい場合、float は等しいとみなされます。

以前の Python バージョンの同等の実装

3.5 より前の Python バージョンの場合、同等の実装関数は次のように定義できます:

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)
ログイン後にコピー

この関数を使用すると、自信を持って実行できます。浮動小数点を比較して近似的に等しいかどうかを確認します。これは、Python で数値データを扱うときに非常に貴重なツールです。

以上がPython で浮動小数点数が等しいかどうかを確実に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート