1、原因:
算术异常:非终止的十进制扩展;没有可精确表示的十进制
BigDecimal a = BigDecimal.valueOf(1);
BigDecimal b = BigDecimal.valueOf(3);
BigDecimal c = a.divide(b);//报错:java.lang.ArithmeticException
2、解决方案:
无限循环小数精确小数点位数
// 四舍五入取两位小数 -- 过时方式,Java 9之前版本使用
BigDecimal c = a.divide(b, 2, BigDecimal.ROUND_HALF_UP);
// 四舍五入取两位小数 --Java 9及之后版本推荐使用
BigDecimal c = a.divide(b, 2, RoundingMode.HALF_UP);