Java.math.BigDecimal.setScale() 方法



说明

java.math.BigDecimal.setScale(int newScale, int roundingMode) 返回一个 BigDecimal,该 BigDecimal 的比例是指定值,其未缩放值通过将此 BigDecimal 的未缩放值乘以或除以适当的 10 的次幂来确定,以维持其整体值。

如果比例通过该操作减少,则必须除以(而不是乘以)未缩放值,并且值可能被更改。在此,指定的舍入模式应用于除法。

由于 BigDecimal 对象不可变,此方法的调用不会导致修改原始对象,这与因命名为 setX 而改变字段 X 的方法的一般惯例相反。相反,setScale 返回具有适当比例的对象;返回的对象可能已分配,也可能未分配。

声明

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

public BigDecimal setScale(int newScale, int roundingMode)

  • 参数

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

roundingMode − 要应用的舍入模式。

返回值

此方法返回一个 BigDecimal,该 BigDecimal 的比例是指定值,其未缩放值通过将此 BigDecimal 的未缩放值乘以或除以适当的 10 的次幂来确定,以维持其整体值。

  • 异常

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

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

示例

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
让我们编译并运行上述程序,这将产生以下结果 −
打印页面