在开发中使用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种模式。

最后修改:2022 年 04 月 29 日
请博主喝杯咖啡~~~