0

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL64).doubleValue());

結果=63.23499999999999

しかし、MathContext.DECIMAL32正しい結果が得られています。以下を参照してください。

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL32).doubleValue());

結果=63.235

4

1 に答える 1

1

ここでの問題はではなく、そうではないBigDecimalという事実ですが、前者は として表すことができないためです。(63.19* 15) + (63.37* 5)1264.71264.6999999999998double

もしあなたがそうするなら

new BigDecimal("1264.7").divide(new BigDecimal("20"), MathContext.DECIMAL64)

代わりに、目的の結果が得られます。

于 2015-05-06T17:27:01.953 に答える