Java大十进制除法

Java大十进制除法,java,bigdecimal,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 BigDe

我做错了什么?很确定这是对的,我可以打印出总数,但计算平均值时它就坏了

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)

引发算术异常是因为除法导致非终止小数,如果显式为方法提供舍入模式,则将不再引发此异常。那么,试试这个

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

你能更新控制台输出吗?我的控制台输出只是总数,242。它停在分水岭上,因为某种原因它不喜欢分水岭。我在网上看到的一切都表明语法是正确的。我在eclipse上得到一个“算术异常”。上面写着BigDecimal.divide(BigDecimal)不可用。谢谢,看起来就是这样。我会记住这一点,只是认为这是没有必要的,因为文件中没有提到。官方文件也提到了这一点。请参考这是我迄今为止读到的最好的答案。这确实解释了它失败的原因。谢谢