Java BigDecimal 除法
Java BigDecimal divide
我在这里做错了什么?很确定这是正确的,我可以打印总数,但是计算平均值时它会中断。
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)
抛出ArithmeticException是因为你的除法导致了一个不终止的小数,如果你显式地为该方法提供了舍入模式,将不再抛出这个异常。所以,试试这个
BigDecimal average = total.divide(test_count, RoundingMode.HALF_UP);
我在这里做错了什么?很确定这是正确的,我可以打印总数,但是计算平均值时它会中断。
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)
抛出ArithmeticException是因为你的除法导致了一个不终止的小数,如果你显式地为该方法提供了舍入模式,将不再抛出这个异常。所以,试试这个
BigDecimal average = total.divide(test_count, RoundingMode.HALF_UP);