温馨提示×

java bigdecimal精度怎么设置

小亿
177
2023-12-22 09:25:03
栏目: 编程语言

在Java中,可以使用BigDecimal类来处理精确的十进制运算,并且可以设置精度。

BigDecimal类的构造方法可以接受一个字符串或者一个double类型的值作为参数。如果传入一个double类型的值,它会自动转换为一个字符串。然后,可以使用setScale方法来设置精度。

下面是一个例子:

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal number1 = new BigDecimal("10.345");
        BigDecimal number2 = new BigDecimal("20.1234");
        
        BigDecimal result = number1.add(number2);
        
        result = result.setScale(2, BigDecimal.ROUND_HALF_UP);
        
        System.out.println(result); // 输出30.47
    }
}

在上面的例子中,我们创建了两个BigDecimal对象number1和number2,分别表示10.345和20.1234。然后,我们使用add方法将这两个数相加,并将结果存储在result变量中。接下来,我们使用setScale方法设置精度为2,并使用ROUND_HALF_UP指定四舍五入的规则。最后,我们输出结果30.47。

注意,setScale方法的第一个参数是精度,第二个参数是要使用的舍入模式。常用的舍入模式有:

  • ROUND_UP:向远离零的方向舍入
  • ROUND_DOWN:向零的方向舍入
  • ROUND_CEILING:向正无穷方向舍入
  • ROUND_FLOOR:向负无穷方向舍入
  • ROUND_HALF_UP:最近数字舍入(5进)。如果保留位后一位大于5,则向上舍入;否则,向下舍入。
  • ROUND_HALF_DOWN:最近数字舍入(5舍)。如果保留位后一位大于等于5,则向上舍入;否则,向下舍入。
  • ROUND_HALF_EVEN:最近数字舍入(5进)。如果保留位后一位大于5,则向上舍入;如果保留位后一位小于5,则向下舍入;如果保留位后一位等于5,且保留位后一位后面的所有位都为0,则向下舍入。

0