ホームページ > Java > &#&チュートリアル > Java で二重減算を行うと不正確な結果が生じるのはなぜですか? BigDecimal はこれをどのように解決できるのでしょうか?

Java で二重減算を行うと不正確な結果が生じるのはなぜですか? BigDecimal はこれをどのように解決できるのでしょうか?

Linda Hamilton
リリース: 2024-12-02 01:05:11
オリジナル
636 人が閲覧しました

Why Does Double Subtraction in Java Lead to Inaccurate Results, and How Can BigDecimal Solve This?

Java の Double 丸めの問題を解決する方法

double を使用する場合、精度の不正確さが発生し、予期しない計算結果が生じる可能性があります。このような問題の 1 つは、提供されたコード スニペットに示されているように、二重減算中に発生する丸めです。

この例では、targetPremium から tempCommission を減算すると、値は 708.75 になりますが、期待値は 708.76 です。この違いは、精度に固有の制限がある倍精度浮動小数点数の使用によるものです。

この問題を解決し、正しい計算を保証するには、java.math.BigDecimal クラスの使用を検討してください。正確な 10 進演算を提供します。 BigDecimal は、浮動小数点演算の精度をより詳細に制御し、二重の減算に伴う丸め誤差を排除します。

改訂されたコード スニペットでは、BigDecimal を使用してプレミアムから netToCompany の減算が実行され、期待される結果が得られます。値は 877.85 です。これは、Double で発生する丸めの問題を排除し、正確な 10 進数の計算を処理する BigDecimal の有効性を示しています:

import java.math.BigDecimal;

BigDecimal premium = BigDecimal.valueOf("1586.6");
BigDecimal netToCompany = BigDecimal.valueOf("708.75");
BigDecimal commission = premium.subtract(netToCompany);
System.out.println(commission + " = " + premium + " - " + netToCompany);
ログイン後にコピー

以上がJava で二重減算を行うと不正確な結果が生じるのはなぜですか? BigDecimal はこれをどのように解決できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート