public static void main(String[] args) {
BigDecimal three = new BigDecimal(3);
BigDecimal one = new BigDecimal(1);
System.out.println(one.divide(three));
}
运行代码,报错如下:
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 Test01.main(Test01.java:10)
解决方法:
- 转成double浮点数进行运算,如下:
public static void main(String[] args) {
BigDecimal three = new BigDecimal(3);
BigDecimal one = new BigDecimal(1);
System.out.println(one.doublevalue()/three.doublevalue());
}
- 使用BigDecimal指定保留的小数位数
public static void main(String[] args) {
BigDecimal three = new BigDecimal(3);
BigDecimal one = new BigDecimal(1);
System.out.println(one.divide(three, 2, RoundingMode.HALF_UP));
}



