値が4桁の数字にうまく収まる必要があるにもかかわらず、BigDecimal除算の原因の丸めが発生するのはなぜですか?BigDecimalの除算は、有効桁数に収まるようになると、原因の丸めが発生するのはなぜですか?
BigDecimal realPercent = new BigDecimal(1.25, new MathContext(4));
// 1.25
BigDecimal percentDivider = new BigDecimal(100, new MathContext(4));
realPercent = realPercent.divide(percentDivider, BigDecimal.ROUND_HALF_UP);
// 0.01
それは私がメソッド呼び出しに精度を設定することにより、希望のように除算を動作させることも可能だが、それはすでにそれをしない理由、それは説明しません。
realPercent = realPercent.divide(percentDivider, BigDecimal.ROUND_HALF_UP);
あなたが使用MathContext
をオーバーライドします。ここで明示的にあなたの除算呼び出しで丸めモードを設定することにより
realPercent.divide(percentDivider, 4, BigDecimal.ROUND_HALF_UP)
// 0.0125
これはどの言語であるかを示したい場合があります。 BigDecimal型を持つ複数の言語があります。 – MSalters
@MSalters aight –