📜  Java中的 BigDecimal setScale() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:31:50.217000             🧑  作者: Mango

Java中的 BigDecimal setScale() 方法及示例

BigDecimal 是 Java 中的一个类,用于表示任意精度的小数,可替代 doublefloat 等基本数据类型的缺陷。BigDecimal 类提供了 setScale() 方法,用来设置小数点后的保留位数。

方法签名
public BigDecimal setScale(int newScale, RoundingMode roundingMode)

参数说明:

  • newScale:保留位数,整数类型。
  • roundingMode:舍入模式,枚举类型,有以下几种取值:UP(向正无穷舍入)、DOWN(向零舍入)、CEILING(向正无穷舍入)、FLOOR(向负无穷舍入)、HALF_UP(四舍五入)、HALF_DOWN(五舍六入)、HALF_EVEN(银行家舍入法)、UNNECESSARY(不舍入)。
示例
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        // 构造一个 BigDecimal 对象
        BigDecimal num = new BigDecimal("10.56789");

        // 保留两位小数,使用四舍五入舍入模式
        BigDecimal result1 = num.setScale(2, RoundingMode.HALF_UP);
        System.out.println(result1); // 10.57

        // 保留两位小数,使用向下舍入模式
        BigDecimal result2 = num.setScale(2, RoundingMode.DOWN);
        System.out.println(result2); // 10.56

        // 保留两位小数,使用银行家舍入法
        BigDecimal result3 = num.setScale(2, RoundingMode.HALF_EVEN);
        System.out.println(result3); // 10.57
    }
}

在上面的示例中,我们构造了一个 BigDecimal 对象 num,它的值为 10.56789。接着使用 setScale() 方法对 num 进行小数位舍入,获取保留两位小数的结果,并分别使用不同的舍入模式。

运行程序后,将会得到以下输出结果:

10.57
10.56
10.57
注意事项

在使用 setScale() 方法进行小数位舍入时,需要注意下列事项:

  • setScale() 方法返回的是一个新的 BigDecimal 对象,原始的 BigDecimal 对象并不会发生改变。
  • 如果需要修改原始的 BigDecimal 对象,需要用新的 BigDecimal 对象覆盖原对象。
  • 当指定舍入模式为 UNNECESSARY 时,如果保留位数小于原小数位数则会抛出一个 ArithmeticException 异常。

以上就是 Java 中的 BigDecimal 类提供的 setScale() 方法的介绍和示例。