Java BigDecimal分裂

时间:2017-03-06 01:08:19

标签: java bigdecimal

我在这里做错了什么?非常确定这是正确的,我能够打印总数,但随后计算出平均值。

public static void main(String[] args) {

    BigDecimal test1 = new BigDecimal("67");
    BigDecimal test2 = new BigDecimal("76");
    BigDecimal test3 = new BigDecimal("99");
    BigDecimal test_count = new BigDecimal("3");
    BigDecimal total = test1.add(test2).add(test3);
    System.out.println(total);
    BigDecimal average = total.divide(test_count);
    System.out.println(average);

}

抛出异常:

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
    at java.math.BigDecimal.divide(BigDecimal.java:1690)
    at HelloWorld.main(HelloWorld.java:31)

1 个答案:

答案 0 :(得分:3)

抛出ArithmeticException是因为您的除法导致非终止十进制,如果您明确地为该方法提供舍入模式,则不再抛出此异常。所以,试试这个

BigDecimal average = total.divide(test_count,  RoundingMode.HALF_UP);