每種舍入模式的描述包括一個表,列出如何在相關的舍入模式下將不一樣的兩位十進制數舍入爲一位十進制數。表中的結果欄能夠經過如下方式得到:使用指定的值建立一個 BigDecimal 數字,造成一個具備適當設置(precision 設置爲 1,roundingMode 設置爲相關的舍入模式)的 MathContext
對象,並使用適當的 MathContext 對此數字調用 round
。下面是一個彙總表,該表顯示了在全部舍入模式下這些舍入操做的結果。html
不一樣舍入模式下的舍入操做彙總(根據給定的舍入模式將輸入數字舍入爲一位數的結果)java
輸入數字 | 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 擬用於取代 BigDecimal
(BigDecimal.ROUND_UP
、BigDecimal.ROUND_DOWN
等)中舍入模式常量的基於整數的枚舉。api
CEILING 向正無限大方向舍入的舍入模式。 |
DOWN 向零方向舍入的舍入模式。 |
FLOOR 向負無限大方向舍入的舍入模式。 |
HALF_DOWN 向最接近數字方向舍入的舍入模式,若是與兩個相鄰數字的距離相等,則向下舍入。 |
HALF_EVEN 向最接近數字方向舍入的舍入模式,若是與兩個相鄰數字的距離相等,則向相鄰的偶數舍入。 |
HALF_UP 向最接近數字方向舍入的舍入模式,若是與兩個相鄰數字的距離相等,則向上舍入。 |
UNNECESSARY 用於斷言請求的操做具備精確結果的舍入模式,所以不須要舍入。 |
UP 遠離零方向舍入的舍入模式。 |