每种舍入模式的描述包括一个表,列出如何在相关的舍入模式下将不同的两位十进制数舍入为一位十进制数。表中的结果栏可以通过以下方式获得:使用指定的值创建一个 BigDecimal 数字,形成一个具有适当设置(precision 设置为 1,roundingMode 设置为相关的舍入模式)的 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 拟用于取代 BigDecimal
(BigDecimal.ROUND_UP
、BigDecimal.ROUND_DOWN
等)中舍入模式常量的基于整数的枚举。
枚举常量摘要:
CEILING 向正无限大方向舍入的舍入模式。 |
DOWN 向零方向舍入的舍入模式。 |
FLOOR 向负无限大方向舍入的舍入模式。 |
HALF_DOWN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。 |
HALF_EVEN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 |
HALF_UP 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 |
UNNECESSARY 用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。 |
UP 远离零方向舍入的舍入模式。 |