ホームページ >Java >&#&チュートリアル >Java で 0.04 を合計するループにより予期しない丸めエラーが発生するのはなぜですか?

Java で 0.04 を合計するループにより予期しない丸めエラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-19 14:00:04562ブラウズ

Why does a loop summing 0.04 in Java result in unexpected rounding errors?

Java の浮動小数点丸めエラー

Java プログラムで、値 0.04 をそれ自体に 25 回合計するループにより、6 回目と 10 回目の反復の間に予期しない結果が生じます。予想どおり 0.04 ずつ増加する代わりに、合計は 0.24000000000000002 や 0.39999999999999997 などの誤った値に丸められます。

この奇妙な動作は、浮動小数点演算の性質によるものです。浮動小数点値は 2 進浮動小数点形式を使用して表現されますが、多くの小数部分を正確に表現することはできません。代わりに、値を 2 の負の累乗の合計として保存します。

たとえば、0.5 は 2^-1 として正確に表現でき、0.125 は 2^-3 として正確に表現できます。ただし、10 進数値 0.96 は、2 の負の累乗の合計として正確に表すことができないため、浮動小数点変数に格納するときにわずかな丸め誤差が生じます。

浮動小数点値に対して算術演算を実行する場合、これらの丸め誤差が累積すると、合計が期待値からずれる可能性があります。これが、0.04 の 25 回の反復の合計が 0.04 の正確な整数倍にならない理由です。

以上がJava で 0.04 を合計するループにより予期しない丸めエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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