BigDecimal - 即使具有精确可表示结果的ArithmeticException

时间:2016-01-21 15:54:36

标签: java bigdecimal

BigDecimal bd1 = new BigDecimal(8757).divide(new BigDecimal(12));

我得到以下异常:

Caused by: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

为什么会这样?除法的结果应该是729.75,其具有终止十进制扩展(.75)。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。实际执行的代码如下:

public class ClassA {   
    public static final BigDecimal BD2= new BigDecimal(12);
}

public ClassB {
    public static final BigDecimal BD1 = new BigDecimal(8757);
    public static final BigDecimal RESULT = BD1.divide(ClassA.BD2);
}
调用BD2方法时未初始化

divide()(我使用断点检查过)。但是,我仍然认为存在一个错误,因为它不应该在这种情况下抛出此异常,这与发生的事情完全无关。我想BD2在调用divide()时为空。