JavaTM 2 Platform
Standard Ed. 6

java.math
列舉 RoundingMode

java.lang.Object
  繼承者 java.lang.Enum<RoundingMode>
      繼承者 java.math.RoundingMode
所有已實作的介面:
Serializable, Comparable<RoundingMode>

public enum RoundingMode
extends Enum<RoundingMode>

為可能丟棄精度的數值操作指定一種捨入行為。每種捨入網要都指示如何計算返回捨入結果位數的最低有效位。如果返回的位數比表示精確數值結果所需的位數少,則捨棄的位數稱為捨棄部分,而不管這些位數對數值的作用如何。換句話說,假設是一個數值,捨棄部分的絕對值可能大於 1。

每種捨入網要的描述包括一個表,列出如何在相關的捨入網要下將不同的兩位十進制數捨入為一位十進制數。表中的結果欄可以通過以下方式獲得:使用指定的值創建一個 BigDecimal 數字,形成一個具有適當設置(precision 設置為 1roundingMode 設置為相關的捨入網要)的 MathContext 物件,並使用適當的 MathContext 對此數字調用 round。下面是一個匯總表,該表顯示了在所有捨入網要下這些捨入操作的結果。

不同捨入網要下的捨入操作匯總

根據給定的捨入網要將輸入數字捨入為一位數的結果
輸入數字 UP DOWN CEILING FLOOR HALF_UP HALF_DOWN HALF_EVEN UNNECESSARY
5.5 6 5 6 5 6 5 6 拋出 ArithmeticException
2.5 3 2 3 2 3 2 2 拋出 ArithmeticException
1.6 2 1 2 1 2 2 2 拋出 ArithmeticException
1.1 2 1 2 1 1 1 1 拋出 ArithmeticException
1.0 1 1 1 1 1 1 1 1
-1.0 -1 -1 -1 -1 -1 -1 -1 -1
-1.1 -2 -1 -1 -2 -1 -1 -1 拋出 ArithmeticException
-1.6 -2 -1 -1 -2 -2 -2 -2 拋出 ArithmeticException
-2.5 -3 -2 -2 -3 -3 -2 -2 拋出 ArithmeticException
-5.5 -6 -5 -5 -6 -6 -5 -6 拋出 ArithmeticException

enum 擬用於取代 BigDecimalBigDecimal.ROUND_UPBigDecimal.ROUND_DOWN 等)中捨入網要常數的基於整數的列舉。

從以下版本開始:
1.5
另請參見:
BigDecimal, MathContext

列舉常數摘要
CEILING
          向正無限大方向捨入的捨入網要。
DOWN
          向零方向捨入的捨入網要。
FLOOR
          向負無限大方向捨入的捨入網要。
HALF_DOWN
          向最接近數字方向捨入的捨入網要,如果與兩個相鄰數字的距離相等,則向下捨入。
HALF_EVEN
          向最接近數字方向捨入的捨入網要,如果與兩個相鄰數字的距離相等,則向相鄰的偶數捨入。
HALF_UP
          向最接近數字方向捨入的捨入網要,如果與兩個相鄰數字的距離相等,則向上捨入。
UNNECESSARY
          用於斷言請求的操作具有精確結果的捨入網要,因此不需要捨入。
UP
          遠離零方向捨入的捨入網要。
 
方法摘要
static RoundingMode valueOf(int rm)
          返回與 BigDecimal 中遺留整數捨入網要常數對應的 RoundingMode 物件。
static RoundingMode valueOf(String name)
          返回帶有指定名稱的該型別的列舉常數。
static RoundingMode[] values()
          Returns an array containing the constants of this enum type, in the order they are declared.
 
從類別 java.lang.Enum 繼承的方法
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
 
從類別 java.lang.Object 繼承的方法
getClass, notify, notifyAll, wait, wait, wait
 

列舉常數詳細資訊

UP

public static final RoundingMode UP
遠離零方向捨入的捨入網要。始終對非零捨棄部分前面的數字加 1。注意,此捨入網要始終不會減少計算值的絕對值。

範例:

輸入數字 使用 UP 捨入網要
將輸入數字捨入為一位數
5.5 6
2.5 3
1.6 2
1.1 2
1.0 1
-1.0 -1
-1.1 -2
-1.6 -2
-2.5 -3
-5.5 -6


DOWN

public static final RoundingMode DOWN
向零方向捨入的捨入網要。從不對捨棄部分前面的數字加 1(即截尾)。注意,此捨入網要始終不會增加計算值的絕對值。

範例:

輸入數字 使用 DOWN 捨入網要
將輸入數字捨入為一位數
5.5 5
2.5 2
1.6 1
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -1
-2.5 -2
-5.5 -5


CEILING

public static final RoundingMode CEILING
向正無限大方向捨入的捨入網要。如果結果為正,則捨入行為類似於 RoundingMode.UP;如果結果為負,則捨入行為類似於 RoundingMode.DOWN。注意,此捨入網要始終不會減少計算值。

範例:

輸入數字 使用 CEILING 捨入網要
將輸入數字捨入為一位數
5.5 6
2.5 3
1.6 2
1.1 2
1.0 1
-1.0 -1
-1.1 -1
-1.6 -1
-2.5 -2
-5.5 -5


FLOOR

public static final RoundingMode FLOOR
向負無限大方向捨入的捨入網要。如果結果為正,則捨入行為類似於 RoundingMode.DOWN;如果結果為負,則捨入行為類似於 RoundingMode.UP。注意,此捨入網要始終不會增加計算值。

範例:

輸入數字 使用 FLOOR 捨入網要
將輸入數字捨入為一位數
5.5 5
2.5 2
1.6 1
1.1 1
1.0 1
-1.0 -1
-1.1 -2
-1.6 -2
-2.5 -3
-5.5 -6


HALF_UP

public static final RoundingMode HALF_UP
向最接近數字方向捨入的捨入網要,如果與兩個相鄰數字的距離相等,則向上捨入。如果被捨棄部分 >= 0.5,則捨入行為同 RoundingMode.UP;否則捨入行為同 RoundingMode.DOWN。注意,此捨入網要就是通常學校裡講的四捨五入。

範例:

輸入數字 使用 HALF_UP 捨入網要
將輸入數字捨入為一位數
5.5 6
2.5 3
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -3
-5.5 -6


HALF_DOWN

public static final RoundingMode HALF_DOWN
向最接近數字方向捨入的捨入網要,如果與兩個相鄰數字的距離相等,則向下捨入。如果被捨棄部分 > 0.5,則捨入行為同 RoundingMode.UP;否則捨入行為同 RoundingMode.DOWN

範例:

輸入數字 使用 HALF_DOWN 捨入網要
將輸入數字捨入為一位數
5.5 5
2.5 2
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -2
-5.5 -5


HALF_EVEN

public static final RoundingMode HALF_EVEN
向最接近數字方向捨入的捨入網要,如果與兩個相鄰數字的距離相等,則向相鄰的偶數捨入。如果捨棄部分左邊的數字為奇數,則捨入行為同 RoundingMode.HALF_UP;如果為偶數,則捨入行為同 RoundingMode.HALF_DOWN。注意,在重複進行一系列計算時,此捨入網要可以在統計上將累加錯誤減到最小。此捨入網要也稱為“銀行家捨入法”,主要在美國使用。此捨入網要類似於 Java 中對 floatdouble 演算法使用的捨入策略。

範例:

輸入數字 使用 HALF_EVEN 捨入網要
將輸入數字捨入為一位數
5.5 6
2.5 2
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -2
-5.5 -6


UNNECESSARY

public static final RoundingMode UNNECESSARY
用於斷言請求的操作具有精確結果的捨入網要,因此不需要捨入。如果對產生精確結果的操作指定此捨入網要,則拋出 ArithmeticException

範例:

輸入數字 使用 UNNECESSARY 捨入網要
將輸入數字捨入為一位數
5.5 拋出 ArithmeticException
2.5 拋出 ArithmeticException
1.6 拋出 ArithmeticException
1.1 拋出 ArithmeticException
1.0 1
-1.0 -1
-1.1 拋出 ArithmeticException
-1.6 拋出 ArithmeticException
-2.5 拋出 ArithmeticException
-5.5 拋出 ArithmeticException

方法詳細資訊

values

public static final RoundingMode[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
for(RoundingMode c : RoundingMode.values())
        System.out.println(c);

返回:
an array containing the constants of this enum type, in the order they are declared

valueOf

public static RoundingMode valueOf(String name)
返回帶有指定名稱的該型別的列舉常數。 字元串必須與用於宣告該型別的列舉常數的 標識符完全比對。(不允許有多餘 的空格。)

參數:
指定要返回的列舉常數的名稱。 -
返回:
返回帶有指定名稱的列舉常數
拋出:
如果該列舉型別沒有帶有指定名稱的常數, - 則拋出 IllegalArgumentException

valueOf

public static RoundingMode valueOf(int rm)
返回與 BigDecimal 中遺留整數捨入網要常數對應的 RoundingMode 物件。

參數:
rm - 要轉換的遺留整數捨入網要
返回:
與給定整數對應的 RoundingMode
拋出:
IllegalArgumentException - 整數超出範圍

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only