ホームページ  >  記事  >  Java  >  Java で 0.04 を繰り返し追加すると予期しない結果が生じるのはなぜですか?

Java で 0.04 を繰り返し追加すると予期しない結果が生じるのはなぜですか?

DDD
DDDオリジナル
2024-11-10 05:48:02543ブラウズ

Why Does Adding 0.04 Repeatedly in Java Lead to Unexpected Results?

Java の浮動小数点の不一致: 精度の制限

Java プログラムでは、浮動小数点値を合計するときに特有の動作が発生する可能性があります。 。クエリで確認されたように、25 個の double 値の配列に 0.04 を加算する単純なループにより、予期しない動作の結果が生成されます。

IEEE の単精度浮動小数点値や倍精度浮動小数点値は、プログラミング言語でよく使用されます。ただし、これらの形式はほとんどの小数を正確に表しません。これは、2 進浮動小数点表現が 10 進浮動小数点とは根本的に異なるためです。

具体的には、2 進浮動小数点で正確に表現できる小数値は 2 の負のべき乗の和のみです。 、0.5 (2^-1)、0.125 (2^-3)、0.625 (2^-1 2^-3) など。小数をこのような合計として正確に表すことができない場合、結果はわずかな近似になります。

この例では、値 0.96 を 2 の負のべき乗の合計として正確に表すことはできません。したがって、0.04 に加算して完全な 10 進精度で出力すると、結果は元の値からわずかに異なります。

この精度制限は 2 進浮動小数点表現に固有のものであり、使用する場合は考慮する必要があります。浮動小数点計算。正確な精度が重要な場合には、代替表現またはアルゴリズムの使用が必要になる場合があります。

以上がJava で 0.04 を繰り返し追加すると予期しない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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