在开发中使用BigDecimal除法运算deivide
产生了以下报错:
报错原因就是计算结果除不尽并且未设置计算结果精度和舍入模式,解决办法就是设置一下divide
的运算精度和舍入模式即可
@Test
public void test1() {
BigDecimal one = new BigDecimal(1);
BigDecimal three = new BigDecimal(3);
BigDecimal result = one.divide(three); // 报错
System.out.println("result = " + result);
}
@Test
public void test2() {
BigDecimal one = new BigDecimal(1);
BigDecimal three = new BigDecimal(3);
BigDecimal result = one.divide(three,2,BigDecimal.ROUND_HALF_UP); // 0.33
System.out.println("result = " + result);
}
关于BigDecimal的舍入模式可以查看源码,一共有7种模式。