BigDecimal.setScale(int newScale, int roundingMode)方法範例


java.math.BigDecimal.setScale(int newScale, int roundingMode) 返回一個BigDecimal,其精度為指定值,其非精度值乘以或除以此BigDecimal的非精度值除以10,以保持其整體值。

如果該精度是減少了操作中,未縮放的值必須被除(而不是乘),並且該值可以被改變。在這裡,指定的舍入模式應用到除法。

由於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.yiibai;

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