Java.math.BigDecimal.setScale() 方法

描述

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

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

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


声明

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

public BigDecimal setScale(int newScale, int roundingMode)

参数

  • newScale − 要返回的 BigDecimal 值的小数位数。

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


返回值

此方法返回一个 BigDecimal,其标度为指定值,其未标度值通过将此 BigDecimal 的未标度值乘以或除以适当的 10 次方来确定,以保持其整体值。


异常

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

  • IllegalArgumentException − 如果 roundingMode 不代表有效的舍入模式。


示例

下面的例子展示了 math.BigDecimal.setScale() 方法的使用。

package com.tutorialspoint;

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