ホームページ  >  記事  >  バックエンド開発  >  Python の浮動小数点演算で予期しない結果が生じることがあるのはなぜですか?

Python の浮動小数点演算で予期しない結果が生じることがあるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-09 21:37:02964ブラウズ

Why does Python's floating-point math sometimes produce unexpected results?

Python 浮動小数点演算の精度の問題

提供されているコード スニペットに示されているように、Python の浮動小数点演算は混乱を招く可能性があります精度が限られているため、結果が得られません。浮動小数点変数に格納された値は、意図した数値を必ずしも正確に表現できるとは限りません。

この現象は Python のバグではなく、浮動小数点演算の基本的な制限です。浮動小数点数は有限のビットを使用して格納されるため、正確に表現できる有効桁数が制限されます。これらの制限内で正確に表現できない数値が計算に含まれる場合、丸め誤差が発生します。

以下の例では、

  • 4.2 - 1.8 の結果は、2.4 ではなく 2.4000000000000004 になります。
  • 1.20 - 1.18 の結果0.02 ではなく 0.020000000000000018。
  • 5.1 - 4 の結果は、1.1 ではなく 1.0999999999999996 になります。

ただし、5 - 4 や 5 - 4 などの整数の計算や比較を実行する場合は、 5.0 ~ 4.0 では、Python は正確な整数値を使用するため、予想される出力はそれぞれ 1 と 1.0 になります。

これらの精度の問題を解決するには、Python の 10 進数モジュールまたは NumPy ライブラリの 10 進数型を使用することをお勧めします。 、浮動小数点計算の精度が向上します。さらに、計算に同様の桁数の数値が含まれるようにすることで、丸め誤差を最小限に抑えることができます。

以上がPython の浮動小数点演算で予期しない結果が生じることがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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