java.lang.Object java.lang.Enum <RoundingMode > java.math.RoundingMode
public enum RoundingMode
为可能丢弃精度的数值操作指定一种舍入行为 。每种舍入模式都指示如何计算返回舍入结果位数的最低有效位。如果返回的位数比表示精确数值结果所需的位数少,则舍弃的位数称为舍弃部分 ,而不管这些位数对数值的作用如何。换句话说,假设是一个数值,舍弃部分的绝对值可能大于 1。
每种舍入模式的描述包括一个表,列出如何在相关的舍入模式下将不同的两位十进制数舍入为一位十进制数。表中的结果栏可以通过以下方式获得:使用指定的值创建一个 BigDecimal 数字,形成一个具有适当设置(precision 设置为 1 ,roundingMode 设置为相关的舍入模式)的 MathContext
对象,并使用适当的 MathContext 对此数字调用 round
。下面是一个汇总表,该表显示了在所有舍入模式下这些舍入操作的结果。
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
等)中舍入模式常量的基于整数的枚举。
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 () 按照声明该枚举类型的常量的顺序,返回 包含这些常量的数组。 |
clone , compareTo , equals , getDeclaringClass , hashCode , name , ordinal , toString , valueOf |
finalize , getClass , notify , notifyAll , wait , wait , wait |
<!----> <!---->
枚举常量详细信息public static final RoundingMode UP
示例:
UP5.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 |
public static final RoundingMode DOWN
示例:
DOWN5.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 |
public static final RoundingMode CEILING
示例:
CEILING5.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 |
public static final RoundingMode FLOOR
示例:
FLOOR5.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 |
public static final RoundingMode HALF_UP
示例:
HALF_UP5.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 |
public static final RoundingMode HALF_DOWN
示例:
HALF_DOWN5.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 |
public static final RoundingMode HALF_EVEN
示例:
HALF_EVEN5.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 |
public static final RoundingMode UNNECESSARY
示例:
UNNECESSARY5.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 |
public static final RoundingMode [] values ()
for(RoundingMode c :RoundingMode.values()) System.out.println(c);
public static RoundingMode valueOf (String name)
指定要返回的枚举常量的名称。
-
如果该枚举类型没有带有指定名称的常量,
- 则抛出 IllegalArgumentException
public static RoundingMode valueOf (int rm)
BigDecimal
中遗留整数舍入模式常量对应的
RoundingMode 对象。
rm
- 要转换的遗留整数舍入模式
IllegalArgumentException
- 整数超出范围