ホームページ > バックエンド開発 > Python チュートリアル > Python の浮動小数点数で丸めエラーが発生するのはなぜですか?また、その対処方法は何ですか?

Python の浮動小数点数で丸めエラーが発生するのはなぜですか?また、その対処方法は何ですか?

Susan Sarandon
リリース: 2024-12-02 21:09:28
オリジナル
865 人が閲覧しました

Why Do Floating-Point Numbers in Python Cause Rounding Errors and How Can They Be Addressed?

浮動小数点数における Python の丸めエラー

Python で浮動小数点数を扱う場合、潜在的な可能性を認識することが重要です。丸め誤差の場合。これらのエラーは、浮動小数点数は実数に近似することしかできず、特定の値が正確な 2 の累乗に近いかどうかに応じて異なる表現がされる可能性があるために発生します。

たとえば、次のコード スニペットを考えてみましょう。

for i_delta in range(0, 101, 1):
  delta = float(i_delta) / 100
  (...)
  filename = 'foo' + str(int(delta * 100)) + '.dat'
ログイン後にコピー

このコードでは、次のデルタ値により同一のファイルが作成されます:

  • delta = 0.29 および delta = 0.28999999999999998
  • delta = 0.58 および delta = 0.57999999999999996

これは、float(29) / 100 の正確な結果が次のとおりであるために発生します。 0.28999999999999998、これは 0.28 に切り捨てられます。同様に、float(58) / 100 は 0.57999999999999996 に切り捨てられます。

この丸め誤差は体系的ではなく、すべての整数に影響を与えるわけではないことに注意することが重要です。これらのエラーについてさらに詳しく知るには、次のコードを検討してください。

import sys

n = int(sys.argv[1])

for i in range(0, n + 1):
  a = int(100 * (float(i) / 100))
  if i != a: print i, a
ログイン後にコピー

このコードを実行すると、丸め誤差が発生する数値のペアが出力されます。これらのペアを分析することで、正確な 2 のべき乗として表現できない数値でエラーが発生する傾向があることを特定できます。

この問題に対処するには、可能な限り正確な算術演算を使用し、以下の点に注意することをお勧めします。浮動小数点数に関連する制限と丸め誤差の説明。さらに詳しい内容については、この複雑なトピックの包括的なガイドについての記事「浮動小数点演算についてコンピュータ科学者が知っておくべきこと」を参照してください。

以上がPython の浮動小数点数で丸めエラーが発生するのはなぜですか?また、その対処方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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