BigDecimal setScale(int newScale, RoundingMode roundingMode)
优质
小牛编辑
124浏览
2023-12-01
描述 (Description)
java.math.BigDecimal.setScale(int newScale, RoundingMode roundingMode)返回一个BigDecimal,其标度是指定值,其未缩放值是通过将此BigDecimal的未缩放值乘以或除以适当的10的幂来确定的,以保持其整体值。
如果通过操作减小比例,则必须将未缩放的值除以(而不是相乘),并且可以改变该值; 在这种情况下,指定的舍入模式应用于除法。
由于BigDecimal对象是不可变的,因此调用此方法不会导致原始对象被修改,这与通常使用名为setX mutate field X的方法相反。相反,setScale返回具有适当比例的对象; 返回的对象可能会或可能不会被新分配。
声明 (Declaration)
以下是java.math.BigDecimal.setScale()方法的声明。
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
参数 (Parameters)
newScale - 要返回的BigDecimal值的比例。
roundingMode - 要应用的舍入模式。
返回值 (Return Value)
此方法返回其规模为指定值的BigDecimal,其未缩放值通过将此BigDecimal的未缩放值乘以或除以适当的10的幂来确定,以维持其整体值。
异常 (Exception)
ArithmeticException - 如果roundingMode == ROUND_UNNECESSARY并且指定的缩放操作需要舍入。
例子 (Example)
以下示例显示了math.BigDecimal.setScale()方法的用法。
package cn.xnip;
import java.math.*;
public class BigDecimalDemo {
public static void main(String[] args) {
// create 2 BigDecimal Objects
BigDecimal bg1, bg2;
bg1 = new BigDecimal("123.12678");
// set scale of bg1 to 2 in bg2 using floor as rounding mode
bg2 = bg1.setScale(2, RoundingMode.FLOOR);
String str = bg1 + " after changing the scale to 2 and rounding is " +bg2;
// print bg2 value
System.out.println( str );
}
}
让我们编译并运行上面的程序,这将产生以下结果 -
123.12678 after changing the scale to 2 and rounding is 123.12