BigDecimal的四舍五入的RoundingMode 选择
BigDecimal的四舍五入的RoundingMode 選擇
RoundingMode介紹:
RoundingMode是一個枚舉類,有一下幾個常量:UP,DOWN,CEILING,FLOOR,HALF_UP,HALF_DOWN,HALF_EVEN,UNNECESSARY
?
UP
public static final RoundingMode UP遠離零方向舍入的舍入模式。始終對非零舍棄部分前面的數字加 1。注意,此舍入模式始終不會減少計算值的絕對值。
示例:
| 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(即截尾)。注意,此舍入模式始終不會增加計算值的絕對值。
示例:
| 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。注意,此舍入模式始終不會減少計算值。
示例:
| 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。注意,此舍入模式始終不會增加計算值。
示例:
| 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。注意,此舍入模式就是通常學校里講的四舍五入。
示例:
| 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。
示例:
| 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 中對float?和double?算法使用的舍入策略。
示例:
| 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。
示例:
| 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 |
總結
以上是生活随笔為你收集整理的BigDecimal的四舍五入的RoundingMode 选择的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下用C语言实现TCP/IP服务
- 下一篇: object类中的equals与自定义e