1.Non-terminating decimal expansion; no exact representable decimal result.
原因是使用除法未指定保留的小数位数,当除不尽的时候会报这个错误,解决方法:
BigDecimal avgCasePrice = totalPrice.divide(BigDecimal.valueOf(2),new MathContext(2,RoundingMode.HALF_DOWN));
2.使用double或者float构造BigDecimal要注意的问题:
错误写法:BigDecimal d1 = new BigDecimal(5.1);
正确写法: BigDecimal d1 = new BigDecimal(“5.1”);
原因是double或者float在计算机中是以近似值的方法来表示的,第一种方式会导致数据不准确