モジュール java.base
パッケージ java.math

列挙RoundingMode

  • すべての実装されたインタフェース:
    Serializable, Comparable<RoundingMode>

    public enum RoundingMode
    extends Enum<RoundingMode>
    精度を破棄できる数値演算に対する丸め動作を指定します。 各丸めモードは、丸められた結果の返された最下位の桁の計算方法を指定します。 正確な数値結果を表現するのに必要な桁数よりも少ない桁数しかない場合、破棄された桁は、その桁の数値における役割にかかわらず、破棄される小数部と呼ばれます。 つまり、破棄される小数部は数値と見なされ、1よりも大きな絶対値を持つことができます。

    各丸めモードの記述には、2桁の異なる10進数値を、当該の丸めモードで1桁の10進数値に丸める方法を示す表があります。 表の結果列は、指定された値を持つBigDecimal数を作成し、適切な設定(precision1roundingModeが当該の丸めモードに設定)を持つMathContextオブジェクトを形成して、適切なMathContextを使用してこの数値に対しroundを呼び出すことで取得できます。 次に、すべての丸めモードの丸め演算の結果を示すサマリー表を示します。

    さまざまな丸めモードでの丸め演算のサマリー
    入力される数値特定の丸めモードで入力を1桁に丸めた結果
    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_UPBigDecimal.ROUND_DOWNなど)の丸めモード定数の整数ベースの列挙を置き換えるために使用されます。

    導入されたバージョン:
    1.5
    関連項目:
    BigDecimal, MathContext
    • 列挙型定数のサマリー

      列挙型定数 
      列挙型定数 説明
      CEILING
      正の無限大に近づくように丸めるモードです。
      DOWN
      0に近づくように丸めるモードです。
      FLOOR
      負の無限大に近づくように丸めるモードです。
      HALF_DOWN
      「もっとも近い数字」に丸める丸めモードです(両隣りの数字が等距離の場合は切り捨てます)。
      HALF_EVEN
      「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は偶数側に丸めます)。
      HALF_UP
      「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は切り上げます)。
      UNNECESSARY
      要求される演算の結果が正確であり、丸めが必要でないことを表す丸めモードです。
      UP
      0から離れるように丸めるモードです。
    • 列挙型定数の詳細

      • UP

        public static final RoundingMode UP
        0から離れるように丸めるモードです。 破棄される0以外の小数部に先行する桁を常に増やします。 この丸めモードは、計算された値の絶対値を減らしません。

        例:

        丸めモードUPの例
        入力される数値 UPによる丸めで
        1桁に丸められた入力
        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
        0に近づくように丸めるモードです。 破棄される小数部に先行する桁を増分しません(つまり切り捨て)。 この丸めモードは、計算された値の絶対値を増やしません。

        例:

        丸めモードDOWNの例
        入力される数値 DOWNによる丸めで
        1桁に丸められた入力
        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のように動作します。 この丸めモードは、計算された値を減らしません。

        例:

        丸めモードCEILINGの例
        入力される数値 CEILINGによる丸めで
        1桁に丸められた入力
        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のように動作します。 この丸めモードは、計算された値を増やしません。

        例:

        丸めモードFLOORの例
        入力される数値 FLOORによる丸めで
        1桁に丸められた入力
        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のように動作します。 これは我々の大半が小学校で習った丸めモードのことです。

        例:

        丸めモードHALF_UPの例
        入力される数値 HALF_UPによる丸めで
        1桁に丸められた入力
        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による丸めで
        1桁に丸められた入力
        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算術演算で使用される丸め方針と同様です。

        例:

        丸めモードHALF_EVENの例
        入力される数値 HALF_EVENによる丸めで
        1桁に丸められた入力
        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による丸めで
        1桁に丸められた入力
        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()
        この列挙型の定数を含む配列を、宣言されている順序で返します。 このメソッドは、次のようにして定数を反復するために使用できます。
        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)
        BigDecimalのレガシー整数丸めモード定数に対応するRoundingModeオブジェクトを返します。
        パラメータ:
        rm - 変換するレガシー整数丸めモード
        戻り値:
        指定された整数に対応するRoundingMode
        例外:
        IllegalArgumentException - 整数が範囲外にある場合