所有类


java.math
枚举 RoundingMode

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

public enum RoundingMode
   
   
   
   
   
extends Enum<RoundingMode>

为可能丢弃精度的数值操作指定一种舍入行为。每种舍入模式都指示如何计算返回舍入结果位数的最低有效位。如果返回的位数比表示精确数值结果所需的位数少,则舍弃的位数称为舍弃部分,而不管这些位数对数值的作用如何。换句话说,假设是一个数值,舍弃部分的绝对值可能大于 1。

每种舍入模式的描述包括一个表,列出如何在相关的舍入模式下将不同的两位十进制数舍入为一位十进制数。表中的结果栏可以通过以下方式获得:使用指定的值创建一个 BigDecimal 数字,形成一个具有适当设置(precision 设置为 1roundingMode 设置为相关的舍入模式)的 MathContext 对象,并使用适当的 MathContext 对此数字调用 round。下面是一个汇总表,该表显示了在所有舍入模式下这些舍入操作的结果。

不同舍入模式下的舍入操作汇总

根据给定的舍入模式将输入数字舍入为一位数的结果
输入数字UPDOWNCEILINGFLOORHALF_UPHALF_DOWNHALF_EVENUNNECESSARY
5.56565656抛出 ArithmeticException
2.53232322抛出 ArithmeticException
1.62121222抛出 ArithmeticException
1.12121111抛出 ArithmeticException
1.011111111
-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 拟用于取代 BigDecimalBigDecimal.ROUND_UPBigDecimal.ROUND_DOWN 等)中舍入模式常量的基于整数的枚举。

另请参见:
BigDecimal, MathContext

枚举常量摘要
CEILING
          向正无限大方向舍入的舍入模式。
DOWN
          向零方向舍入的舍入模式。
FLOOR
          向负无限大方向舍入的舍入模式。
HALF_DOWN
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
HALF_EVEN
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
HALF_UP
          向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
UNNECESSARY
          用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
UP
          远离零方向舍入的舍入模式。
 
方法摘要
static RoundingModevalueOf(int rm)
          返回与 BigDecimal 中遗留整数舍入模式常量对应的 RoundingMode 对象。
static RoundingModevalueOf(String name)
          返回带有指定名称的该类型的枚举常量。
static RoundingMode[]values()
          按照声明该枚举类型的常量的顺序,返回 包含这些常量的数组。
 
从类 java.lang.Enum 继承的方法
clone, compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

枚举常量详细信息

UP

public static final RoundingMode UP
远离零方向舍入的舍入模式。始终对非零舍弃部分前面的数字加 1。注意,此舍入模式始终不会减少计算值的绝对值。

示例:

输入数字使用 UP 舍入模式
将输入数字舍入为一位数
5.56
2.53
1.62
1.12
1.01
-1.0-1
-1.1-2
-1.6-2
-2.5-3
-5.5-6


DOWN

public static final RoundingMode DOWN
向零方向舍入的舍入模式。从不对舍弃部分前面的数字加 1(即截尾)。注意,此舍入模式始终不会增加计算值的绝对值。

示例:

输入数字使用 DOWN 舍入模式
将输入数字舍入为一位数
5.55
2.52
1.61
1.11
1.01
-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。注意,此舍入模式始终不会减少计算值。

示例:

输入数字使用 CEILING 舍入模式
将输入数字舍入为一位数
5.56
2.53
1.62
1.12
1.01
-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。注意,此舍入模式始终不会增加计算值。

示例:

输入数字使用 FLOOR 舍入模式
将输入数字舍入为一位数
5.55
2.52
1.61
1.11
1.01
-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。注意,此舍入模式就是通常学校里讲的四舍五入。

示例:

输入数字使用 HALF_UP 舍入模式
将输入数字舍入为一位数
5.56
2.53
1.62
1.11
1.01
-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 舍入模式
将输入数字舍入为一位数
5.55
2.52
1.62
1.11
1.01
-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 中对 floatdouble 算法使用的舍入策略。

示例:

输入数字使用 HALF_EVEN 舍入模式
将输入数字舍入为一位数
5.56
2.52
1.62
1.11
1.01
-1.0-1
-1.1-1
-1.6-2
-2.5-2
-5.5-6