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 サイトの他の関連記事を参照してください。