- java.lang.Object
-
- java.lang.Enum<RoundingMode>
-
- java.math.RoundingMode
-
- 实现的所有接口
-
Serializable
,Comparable<RoundingMode>
public enum RoundingModeextends Enum<RoundingMode>
指定能够丢弃精度的数值运算的舍入行为 。 每个舍入模式指示如何计算舍入结果的最低有效返回数字。 如果返回的数字少于表示精确数字结果所需的数字,则丢弃的数字将被称为丢弃的部分,而不管数字对数字值的贡献。 换句话说,被认为是数值,丢弃的部分可以具有大于1的绝对值。每个舍入模式描述包括一个表,该表列出了在所讨论的舍入模式下不同的两位十进制值如何舍入到一位十进制值。 可以通过创建具有指定值的
Summary of Rounding Operations Under Different Rounding Modes Input Number Result of rounding input to one digit with the given rounding modeBigDecimal
数字来获取表中的结果列,使用正确的设置形成MathContext
对象(precision
设置为1
,并将roundingMode
设置为相关的舍入模式),并在此处调用round
号码与正确的MathContext
。 显示所有舍入模式的舍入操作结果的汇总表如下所示。UP
DOWN
CEILING
FLOOR
HALF_UP
HALF_DOWN
HALF_EVEN
UNNECESSARY
5.5 6 5 6 5 6 5 6 throwArithmeticException
2.5 3 2 3 2 3 2 2 throwArithmeticException
1.6 2 1 2 1 2 2 2 throwArithmeticException
1.1 2 1 2 1 1 1 1 throwArithmeticException
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 throwArithmeticException
-1.6 -2 -1 -1 -2 -2 -2 -2 throwArithmeticException
-2.5 -3 -2 -2 -3 -3 -2 -2 throwArithmeticException
-5.5 -6 -5 -5 -6 -6 -5 -6 throwArithmeticException
此
枚举
旨在替换舍入模式常量的基于整数的枚举在BigDecimal
(BigDecimal.ROUND_UP
,BigDecimal.ROUND_DOWN
,等等)。- 从以下版本开始:
- 1.5
- 另请参见:
-
BigDecimal
,MathContext
-
-
Enum Constant Summary
Enum Constants Enum Constant 描述 CEILING
舍入模式向正无穷大舍入。DOWN
舍入模式向零舍入。FLOOR
舍入模式向负无穷大舍入。HALF_DOWN
舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下向下舍入。HALF_EVEN
舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下,向着偶邻居舍入。HALF_UP
舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下向上舍入。UNNECESSARY
舍入模式断言所请求的操作具有精确结果,因此不需要舍入。UP
舍入模式从零开始舍入。
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static RoundingMode
valueOf(int rm)
返回RoundingMode
对应于传统整数舍入模式常量的RoundingMode对象 。static RoundingMode
valueOf(String name)
返回具有指定名称的此类型的枚举常量。static RoundingMode[]
values()
按照声明的顺序返回一个包含此枚举类型常量的数组。
-
-
-
Enum Constant Detail
-
UP
public static final RoundingMode UP
舍入模式从零开始舍入。 始终在非零丢弃分数之前递增数字。 请注意,此舍入模式决不会降低计算值的大小。例:
Rounding mode UP Examples Input Number Input rounded to one digit
withUP
rounding 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
舍入模式向零舍入。 切勿在丢弃的分数之前递增数字(即截断)。 请注意,此舍入模式永远不会增加计算值的大小。例:
Rounding mode DOWN Examples Input Number Input rounded to one digit
withDOWN
rounding 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
。 请注意,此舍入模式永远不会减少计算值。例:
Rounding mode CEILING Examples Input Number Input rounded to one digit
withCEILING
rounding 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
。 请注意,此舍入模式永远不会增加计算值。例:
Rounding mode FLOOR Examples Input Number Input rounded to one digit
withFLOOR
rounding 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
舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下向上舍入。 如果丢弃的部分RoundingMode.UP
则表现为RoundingMode.UP
; 否则,表现为RoundingMode.DOWN
。 请注意,这是学校常用的舍入模式。例:
Rounding mode HALF_UP Examples Input Number Input rounded to one digit
withHALF_UP
rounding 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
。例:
Rounding mode HALF_DOWN Examples Input Number Input rounded to one digit
withHALF_DOWN
rounding 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
算术的舍入策略。例:
Rounding mode HALF_EVEN Examples Input Number Input rounded to one digit
withHALF_EVEN
rounding 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
。例:
Rounding mode UNNECESSARY Examples Input Number Input rounded to one digit
withUNNECESSARY
rounding 5.5 throwArithmeticException
2.5 throwArithmeticException
1.6 throwArithmeticException
1.1 throwArithmeticException
1.0 1 -1.0 -1 -1.1 throwArithmeticException
-1.6 throwArithmeticException
-2.5 throwArithmeticException
-5.5 throwArithmeticException
-
-
方法详细信息
-
values
public static RoundingMode[] values()
按照声明的顺序返回一个包含此枚举类型常量的数组。 此方法可用于迭代常量,如下所示:for (RoundingMode c : RoundingMode.values()) System.out.println(c);
- 结果
- 包含此枚举类型常量的数组,按声明的顺序排列
-
valueOf
public static RoundingMode valueOf(String name)
返回具有指定名称的此类型的枚举常量。 该字符串必须与用于声明此类型中的枚举常量的标识符完全匹配。 (不允许使用无关的空白字符。)- 参数
-
name
- 要返回的枚举常量的名称。 - 结果
- 具有指定名称的枚举常量
- 异常
-
IllegalArgumentException
- 如果此枚举类型没有具有指定名称的常量 -
NullPointerException
- 如果参数为null
-
valueOf
public static RoundingMode valueOf(int rm)
返回RoundingMode
对应于传统整数舍入模式常量的RoundingMode对象 。- 参数
-
rm
- 要转换的传统整数舍入模式 - 结果
-
RoundingMode
对应于给定的整数。 - 异常
-
IllegalArgumentException
- 整数超出范围
-
-