每种舍入模式的描述包括一个表,列出如何在相关的舍入模式下将不一样的两位十进制数舍入为一位十进制数。表中的结果栏能够经过如下方式得到:使用指定的值建立一个 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 远离零方向舍入的舍入模式。 |