ホームページ >バックエンド開発 >C++ >浮動小数点計算の結果が 2.0 ではなく 1.9999999999999996 になるのはなぜですか?

浮動小数点計算の結果が 2.0 ではなく 1.9999999999999996 になるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-15 01:09:02913ブラウズ

Why Does a Floating-Point Calculation Result in 1.9999999999999996 Instead of 2.0?

浮動小数点表現における精度の不一致の処理

浮動小数点数を扱う場合、その内部表現による精度の制限により、次のような問題が発生する可能性があります。予想外の結果。次の問題を考えてみましょう。

プログラム内で、mw という名前の変数が値 4.6 で初期化されます。この値は、この値を持つ文字列を double に変換することで得られます。ただし、列数を決定する計算に使用すると、結果は予期された 2.0 ではなく 1.9999999999999996 となります。

この矛盾は、浮動小数点数の内部表現が近似値であるために発生します。この場合、4.6 を浮動小数点として正確に保存することはできず、計算ではわずかに異なる値 4.5999999999999996 が使用されます。

この問題に対処するには、浮動小数点数との厳密な等価比較を認識することが重要です。ポイント数は信頼できません。代わりに、許容可能な値の範囲を使用して、結果が期待される結果に十分近いかどうかを判断することを検討してください。

さらに、一部の値は浮動小数点数として正確に表すことができないことに注意してください。詳細については、「コンピュータ科学者が浮動小数点演算について知っておくべきこと」や「浮動小数点数の比較」などの包括的なリソースを参照してください。これらの制限を理解し、適切な手法を適用することで、浮動小数点数を扱う際の精度の問題を軽減できます。

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

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