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