📅  最后修改于: 2023-12-03 15:31:50.217000             🧑  作者: Mango
BigDecimal
是 Java 中的一个类,用于表示任意精度的小数,可替代 double
和 float
等基本数据类型的缺陷。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()
方法的介绍和示例。