ホームページ  >  記事  >  Java  >  Java で double を合計すると予期しない値が発生するのはなぜですか?

Java で double を合計すると予期しない値が発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-10 18:15:02929ブラウズ

Why Does Summing Doubles in Java Result in Unexpected Values?

Java プログラムにおける浮動小数点の奇妙な動作

この質問では、ユーザーは配列内の double 値を合計するときに奇妙な動作に遭遇します。具体的には、結果は予想される合計から徐々に外れます。この現象は、デジタル システムでの浮動小数点値の表現方法に起因すると考えられます。

プログラミング言語で最も一般的な浮動小数点表現である IEEE の単精度および倍精度では、10 進ストレージではなく 2 進ストレージが採用されています。したがって、バイナリ形式で正確に表現できるのは、特定の小数部分のみです。これらの分数は、

0.5 (2^-1)
0.125 (2^-3)
0.625 (2^-1 + 2^-3)

など、2 の負のべき乗の合計として表現できる値に限定されます。0.96 など、2 の負のべき乗の合計として表現できない分数には、固有の誤差が含まれます。それらのバイナリ表現。これらの分数を完全な精度で 10 進数値として表示すると、この避けられない近似により、元の値とは一致しません。

以上がJava で double を合計すると予期しない値が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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