- 所有已实现的接口:
Serializable,Comparable<RoundingMode>,Constable
指定一个舍入策略对于能够丢弃精度的数值运算。每种舍入模式指示如何计算舍入结果的最低有效返回数字。如果返回的数字少于表示准确数值结果所需的数字,则丢弃的数字将被称为丢弃分数无论数字对数字值的贡献如何。换句话说,作为一个数值,被丢弃的分数可以有一个大于一的绝对值。
更一般地,舍入策略定义了从实数到可表示值子集的映射。在 BigDecimal 的情况下,可表示值是计算中使用的 precision 的函数。假设数学结果在 BigDecimal 的指数范围内,则数学结果将在结果精度中准确表示或将落在两个相邻的可表示值之间。在落在两个可表示值之间的情况下,舍入策略确定这两个括号值中的哪一个是结果。对于范围内的实数,对于一组给定的可表示值,舍入策略将实数线的连续段映射到单个可表示值,其中在数值上等于可表示值的实数被映射到该值。
每个舍入模式描述包括一个表格,列出不同的两位十进制值在相关舍入模式下如何舍入为一位十进制值。表中的结果列可以通过创建一个具有指定值的BigDecimal数字,形成一个具有适当设置的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 | 扔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 注意:
- 此类中声明的五种舍入模式对应于定义在IEEE 浮点运算标准.如果存在,将在特定常量的文档中注明此对应关系。
- 看Java 语言规范:
-
15.4 浮点表达式
- 自从:
- 1.5
- 参见:
-
内部类总结
在类 java.lang.Enum 中声明的嵌套类/接口
Enum.EnumDesc<E extends Enum<E>> -
枚举常量总结
枚举常量 -
方法总结
修饰符和类型方法描述static RoundingModevalueOf(int rm) 返回与BigDecimal中的遗留整数舍入模式常量对应的RoundingMode对象。static RoundingMode返回具有指定名称的此类的枚举常量。static RoundingMode[]values()返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。
-
枚举常量详细信息
-
UP
从零舍入的舍入模式。始终在非零丢弃分数之前递增数字。请注意,这种舍入模式永远不会减小计算值的大小。示例:
舍入模式 UP 示例 输入号码 输入四舍五入到一位数 UP四舍五入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
向零舍入的舍入模式。永远不要在丢弃的分数之前增加数字(即截断)。请注意,这种舍入模式永远不会增加计算值的大小。- API 注意:
-
此舍入模式类似于用于
float和double运算符余数和转换为整数值 (JLS 15.4) 的舍入策略。此模式对应于 IEEE 754 舍入方向属性 roundTowardZero。示例:
舍入模式 DOWN 示例 输入号码 输入四舍五入到一位数 DOWN四舍五入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
向正无穷大舍入的舍入模式。如果结果为正,则表现与RoundingMode.UP相同;如果为负,则行为与RoundingMode.DOWN相同。请注意,这种舍入模式永远不会减少计算值。此模式对应于 IEEE 754 舍入方向属性 roundTowardPositive。示例:
舍入模式 CEILING 示例 输入号码 输入四舍五入到一位数 CEILING四舍五入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
向负无穷大舍入的舍入模式。如果结果是肯定的,表现得和RoundingMode.DOWN一样;如果为负,则与RoundingMode.UP一样。请注意,这种舍入模式永远不会增加计算值。此模式对应于 IEEE 754 舍入方向属性 roundTowardNegative。示例:
舍入模式 FLOOR 示例 输入号码 输入四舍五入到一位数 FLOOR四舍五入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
舍入模式向“最近的邻居”舍入,除非两个邻居是等距的,在这种情况下舍入。如果丢弃的分数≥ 0.5,则与RoundingMode.UP一样;否则,行为与RoundingMode.DOWN相同。请注意,这是学校通常教授的舍入模式。此模式对应于 IEEE 754 舍入方向属性 roundTiesToAway。示例:
舍入模式 HALF_UP 示例 输入号码 输入四舍五入到一位数 HALF_UP四舍五入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
舍入模式向“最近的邻居”舍入,除非两个邻居是等距的,在这种情况下向下舍入。如果丢弃的分数 > 0.5,则与RoundingMode.UP一样;否则,行为与RoundingMode.DOWN相同。示例:
舍入模式 HALF_DOWN 示例 输入号码 输入四舍五入到一位数 HALF_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
舍入模式向“最近的邻居”舍入,除非两个邻居都是等距的,在这种情况下,向偶数邻居舍入。如果丢弃分数左侧的数字是奇数,则与RoundingMode.HALF_UP一样;如果它是偶数,其行为与RoundingMode.HALF_DOWN相同。- API 注意:
-
这是一种舍入模式,当在一系列计算中重复应用时,它可以统计地最小化累积误差。它有时被称为“银行家舍入”,主要在美国使用。这种舍入模式类似于 Java 中大多数
float和double算术运算符所使用的舍入策略 (JLS 15.4)。此模式对应于 IEEE 754 舍入方向属性 roundTiesToEven。示例:
舍入模式 HALF_EVEN 示例 输入号码 输入四舍五入到一位数 HALF_EVEN四舍五入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
舍入模式断言所请求的操作具有准确的结果,因此不需要舍入。如果在产生不精确结果的操作上指定了此舍入模式,则会抛出ArithmeticException。示例:
舍入模式 UNNECESSARY 示例 输入号码 输入四舍五入到一位数 UNNECESSARY四舍五入5.5 扔 ArithmeticException2.5 扔 ArithmeticException1.6 扔 ArithmeticException1.1 扔 ArithmeticException1.0 1 -1.0 -1 -1.1 扔 ArithmeticException-1.6 扔 ArithmeticException-2.5 扔 ArithmeticException-5.5 扔 ArithmeticException
-
-
方法详情
-
values
返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。- 返回:
- 包含此枚举类常量的数组,按照它们声明的顺序排列
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)- 参数:
name- 要返回的枚举常量的名称。- 返回:
- 具有指定名称的枚举常量
- 抛出:
IllegalArgumentException- 如果此枚举类没有具有指定名称的常量NullPointerException- 如果参数为空
-
valueOf
返回与BigDecimal中的遗留整数舍入模式常量对应的RoundingMode对象。- 参数:
rm- 要转换的旧整数舍入模式- 返回:
RoundingMode对应于给定的整数。- 抛出:
IllegalArgumentException- 整数超出范围
-