BigDecimal setScale(int newScale, int roundingMode)

优质
小牛编辑
130浏览
2023-12-01

描述 (Description)

java.math.BigDecimal.setScale(int newScale, int roundingMode)返回其规模为指定值的BigDecimal,其未缩放值通过将此BigDecimal的未缩放值乘以或除以适当的10的幂来确定,以保持其整体值。

如果通过操作减小比例,则必须将未缩放的值除以(而不是相乘),并且可以改变该值。 这里,指定的舍入模式应用于除法。

由于BigDecimal对象是不可变的,因此调用此方法不会导致原始对象被修改,这与通常使用名为setX mutate field X的方法相反。相反,setScale返回具有适当比例的对象; 返回的对象可能会或可能不会被新分配。

声明 (Declaration)

以下是java.math.BigDecimal.setScale()方法的声明。

public BigDecimal setScale(int newScale, int roundingMode)

参数 (Parameters)

  • newScale - 要返回的BigDecimal值的比例。

  • roundingMode - 要应用的舍入模式。

返回值 (Return Value)

此方法返回其规模为指定值的BigDecimal,其未缩放值通过将此BigDecimal的未缩放值乘以或除以适当的10的幂来确定,以维持其整体值。

异常 (Exception)

  • ArithmeticException - 如果roundingMode == ROUND_UNNECESSARY并且指定的缩放操作需要舍入。

  • IllegalArgumentException - 如果roundingMode不表示有效的舍入模式。

例子 (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
      // 0 specifies ROUND_UP
      bg2 = bg1.setScale(2, 0);
      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.13