BigDecimal中divide方法抛异常:Non-terminating decimal expansion; no exact representable decimal result 在使用 BigDecimal rate = new BigDecimal(1).divide(new BigDecimal(3)); 1 时抛异常: Non-terminating decimal expansion; no exact representable decimal result 1 原来是在做除法的时候出现了无限不循环小数如:0.333333333333 解决方案 在做做除法的时候指定保留的小数的位数: BigDecimal rate = new BigDecimal(1).divide(new BigDecimal(3), 6, BigDecimal.ROUND_HALF_UP);