模块 java.base
 java.math

枚举类枚举类 RoundingMode

java.lang.Object
java.lang.Enum <RoundingMode >
java.math.RoundingMode
所有已实现的接口:
Serializable , Comparable<RoundingMode> , Constable

public enum RoundingMode extends Enum <RoundingMode >
指定一个舍入策略对于能够丢弃精度的数值运算。每种舍入模式指示如何计算舍入结果的最低有效返回数字。如果返回的数字少于表示准确数值结果所需的数字,则丢弃的数字将被称为丢弃分数无论数字对数字值的贡献如何。换句话说,作为一个数值,被丢弃的分数可以有一个大于一的绝对值。

更一般地,舍入策略定义了从实数到可表示值子集的映射。在 BigDecimal 的情况下,可表示值是计算中使用的 precision 的函数。假设数学结果在 BigDecimal 的指数范围内,则数学结果将在结果精度中准确表示或将落在两个相邻的可表示值之间。在落在两个可表示值之间的情况下,舍入策略确定这两个括号值中的哪一个是结果。对于范围内的实数,对于一组给定的可表示值,舍入策略将实数线的连续段映射到单个可表示值,其中在数值上等于可表示值的实数被映射到该值。

每个舍入模式描述包括一个表格,列出不同的两位十进制值在相关舍入模式下如何舍入为一位十进制值。表中的结果列可以通过创建一个具有指定值的BigDecimal数字,形成一个具有适当设置的MathContext 对象(precision设置为1roundingMode设置为相关的舍入模式),并在此调用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 RoundingMode
    valueOf(int rm)
    返回与 BigDecimal 中的遗留整数舍入模式常量对应的 RoundingMode 对象。
    static RoundingMode
    valueOf(String name)
    返回具有指定名称的此类的枚举常量。
    static RoundingMode[]
    返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。

    在类 java.lang.Object 中声明的方法

    getClass, notify, notifyAll, wait, wait, wait
  • 枚举常量详细信息

    • UP

      public static final RoundingMode  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

      public static final RoundingMode  DOWN
      向零舍入的舍入模式。永远不要在丢弃的分数之前增加数字(即截断)。请注意,这种舍入模式永远不会增加计算值的大小。
      API 注意:
      此舍入模式类似于用于 floatdouble 运算符余数和转换为整数值 (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

      public static final RoundingMode  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

      public static final RoundingMode  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

      public static final RoundingMode  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

      public static final RoundingMode  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

      public static final RoundingMode  HALF_EVEN
      舍入模式向“最近的邻居”舍入,除非两个邻居都是等距的,在这种情况下,向偶数邻居舍入。如果丢弃分数左侧的数字是奇数,则与 RoundingMode.HALF_UP 一样;如果它是偶数,其行为与 RoundingMode.HALF_DOWN 相同。
      API 注意:
      这是一种舍入模式,当在一系列计算中重复应用时,它可以统计地最小化累积误差。它有时被称为“银行家舍入”,主要在美国使用。这种舍入模式类似于 Java 中大多数 floatdouble 算术运算符所使用的舍入策略 (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

      public static final RoundingMode  UNNECESSARY
      舍入模式断言所请求的操作具有准确的结果,因此不需要舍入。如果在产生不精确结果的操作上指定了此舍入模式,则会抛出 ArithmeticException

      示例:

      舍入模式 UNNECESSARY 示例
      输入号码 输入四舍五入到一位数
      UNNECESSARY 四舍五入
      5.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
  • 方法详情

    • values

      public static RoundingMode [] values()
      返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。
      返回:
      包含此枚举类常量的数组,按照它们声明的顺序排列
    • valueOf

      public static RoundingMode  valueOf(String  name)
      返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)
      参数:
      name - 要返回的枚举常量的名称。
      返回:
      具有指定名称的枚举常量
      抛出:
      IllegalArgumentException - 如果此枚举类没有具有指定名称的常量
      NullPointerException - 如果参数为空
    • valueOf

      public static RoundingMode  valueOf(int rm)
      返回与 BigDecimal 中的遗留整数舍入模式常量对应的 RoundingMode 对象。
      参数:
      rm - 要转换的旧整数舍入模式
      返回:
      RoundingMode 对应于给定的整数。
      抛出:
      IllegalArgumentException - 整数超出范围