java.lang.Object
java.lang.Enum<RoundingMode>
java.math.RoundingMode
- すべての実装されたインタフェース:
Serializable
,Comparable<RoundingMode>
,Constable
public enum RoundingMode extends Enum<RoundingMode>
精度を破棄できる数値演算に対する丸め動作を指定します。 各丸めモードは、丸められた結果の返された最下位の桁の計算方法を指定します。 正確な数値結果を表現するのに必要な桁数よりも少ない桁数しかない場合、破棄された桁は、その桁の数値における役割にかかわらず、破棄される小数部と呼ばれます。 つまり、破棄される小数部は数値と見なされ、1よりも大きな絶対値を持つことができます。
各丸めモードの記述には、2桁の異なる10進数値を、当該の丸めモードで1桁の10進数値に丸める方法を示す表があります。 表の結果列は、指定された値を持つBigDecimal
数を作成し、適切な設定(precision
が1
、roundingMode
が当該の丸めモードに設定)を持つ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_UP
、BigDecimal.ROUND_DOWN
など)の丸めモード定数の整数ベースの列挙を置き換えるために使用されます。
- APIのノート:
- このクラスで宣言されている5つの丸めモードは、「浮動小数点演算のIEEE規格」、IEEE 754-2019で定義されている丸め方向属性に対応しています。 存在する場合、この対応関係は特定の定数のドキュメントに記載されています。
- 導入されたバージョン:
- 1.5
- 関連項目:
BigDecimal
,MathContext
-
ネストされたクラスのサマリー
クラスjava.lang.Enumで宣言されたネストされたクラス/インタフェース
Enum.EnumDesc<E extends Enum<E>>
-
列挙型定数のサマリー
列挙型定数説明正の無限大に近づくように丸めるモードです。0に近づくように丸めるモードです。負の無限大に近づくように丸めるモードです。「もっとも近い数字」に丸める丸めモードです(両隣りの数字が等距離の場合は切り捨てます)。「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は偶数側に丸めます)。「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は切り上げます)。要求される演算の結果が正確であり、丸めが必要でないことを表す丸めモードです。0から離れるように丸めるモードです。 -
メソッドのサマリー
修飾子と型メソッド説明static RoundingMode
valueOf(int rm)
BigDecimal
のレガシー整数丸めモード定数に対応するRoundingMode
オブジェクトを返します。static RoundingMode
指定された名前を持つこのクラスのenum定数を返します。static RoundingMode[]
values()
この列挙クラスの定数を含む配列を宣言されている順序で 返します。
-
列挙型定数の詳細
-
UP
public static final RoundingMode UP0から離れるように丸めるモードです。 破棄される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 DOWN0に近づくように丸めるモードです。 破棄される小数部に先行する桁を増分しません(つまり切り捨て)。 この丸めモードは、計算された値の絶対値を増やしません。 このモードはIEEE 754-2019丸め属性roundTowardZeroに対応しています。例:
丸めモード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
のように動作します。 この丸めモードは、計算された値を減らしません。 このモードはIEEE 754-2019丸め属性roundTowardPositiveに対応しています。例:
丸めモード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
のように動作します。 この丸めモードは、計算された値を増やしません。 このモードはIEEE 754-2019丸め属性roundTowardNegativeに対応しています。例:
丸めモード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
のように動作します。 これは我々の大半が小学校で習った丸めモードのことです。 このモードはIEEE 754-2019丸め属性roundTiesToAwayに対応しています。例:
丸めモード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
算術演算で使用される丸め方針と同様です。 このモードはIEEE 754-2019丸め属性roundTiesToEvenに対応しています。例:
丸めモード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()この列挙クラスの定数を含む配列を宣言されている順序で 返します。- 戻り値:
- この列挙クラスの定数を宣言されている順序で含む配列
-
valueOf
public static RoundingMode valueOf(String name)指定された名前を持つこのクラスのenum定数を返します。 文字列は、このクラスでenum定数を宣言するために使用される識別子とexactlyと一致する必要があります。 (不適切な空白文字は許可されません。)- パラメータ:
name
- 返される列挙型定数の名前。- 戻り値:
- 指定された名前を持つ列挙型定数
- 例外:
IllegalArgumentException
- この列挙型クラスに指定された名前の定数がない場合NullPointerException
- 引数がnullの場合
-
valueOf
public static RoundingMode valueOf(int rm)BigDecimal
のレガシー整数丸めモード定数に対応するRoundingMode
オブジェクトを返します。- パラメータ:
rm
- 変換するレガシー整数丸めモード- 戻り値:
- 指定された整数に対応する
RoundingMode
。 - 例外:
IllegalArgumentException
- 整数が範囲外にある場合
-