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

クラスBigDecimal

java.lang.Object
java.lang.Number
java.math.BigDecimal
すべての実装されたインタフェース:
Serializable, Comparable<BigDecimal>

public class BigDecimal extends Number implements Comparable<BigDecimal>
変更が不可能な、任意精度の符号付き10進数です。 BigDecimalは、任意精度のスケールなしの整数値と、32ビット整数のスケールで構成されます。 0または正の場合、スケールは小数点以下の桁数です。 負の場合、スケールなしの数値に、スケールの正負を逆にした値を指数とする10の累乗を乗算します。 つまり、BigDecimalで表される数値は(unscaledValue×10-scale)です。

BigDecimalクラスは、算術、スケール操作、丸め、比較、ハッシング、および書式変換の演算を提供します。 toString()メソッドはBigDecimalの正規表現を提供します。

BigDecimalクラスは、ユーザーが丸め動作を完全に制御できるようにします。 丸めモードが指定されず、正確な結果が表現できない場合、例外がスローされます。そうでない場合、演算に適切なMathContextオブジェクトを指定することで、選択された精度と丸めモードで計算が実行されます。 どちらの場合も、丸めの制御に8つの丸めモードが提供されます。 このクラスの整数フィールドを使用して、丸めモードを表す(ROUND_HALF_UPなど)は非推奨です。代わりにRoundingMode enum、(RoundingMode.HALF_UPなど)の列挙値を使用する必要があります。

MathContextオブジェクトに精度設定0 (例: MathContext.UNLIMITED)が指定されている場合、その算術メソッドはMathContextオブジェクトを使用しないため、算術演算は正確です。 これは、リリース5より前でサポートされていた唯一の動作です。 結果の計算が正確であるため、精度0の設定を持つMathContextオブジェクトの丸めモード設定は使用されず、無関係です。 除算の場合、正確な商は小数点以下が無限の長さを持つ可能性があります(例: 1÷3)。 商の小数点以下が無限で、演算が正確な結果を返すように指定されている場合、ArithmeticExceptionがスローされます。 そうでない場合、ほかの演算と同様に、除算の正確な結果が返されます。

精度設定が0でない場合、BigDecimalの算術ルールは、ANSI X3.274-1996およびANSI X3.274-1996/AM 1-2000 (セクション7.4)で定義されている、選択された演算モードと広範な互換性があります。 これらの規格とは異なり、BigDecimalには、リリース5より前のBigDecimalの除算で必須だった多くの丸めモードがあります。 これらのANSI規格とBigDecimal仕様の競合は、BigDecimalを優先する方法で解決されます。

同じ数値でも表現が異なる(スケールが異なる)可能性があるため、算術および丸めのルールは、数値的な結果と、結果の表現に使用するスケールの両方を指定する必要があります。

通常、丸めモードと精度設定によって、正確な結果に返される桁数よりも多くの桁数(分裂と平方根の場合にはおそらく無限に多く)がある場合、桁数が制限された演算結果の返り方が決定されます。 まず、返される桁の合計数はMathContextprecision設定で指定されます。これにより、結果の精度が決定されます。 桁数のカウントは、正確な結果のもっとも左の0でない桁から始まります。 丸めモードでは、破棄される桁が返される結果にどのように影響するかが決定されます。

すべての算術演算子について、最初に正確な中間結果が計算されたかのように演算が実行され、選択した丸めモードを使用して、精度設定(必要に応じて)で指定された桁数に丸められます。 正確な結果が返されない場合、正確な結果のいくつかの桁位置が破棄されます。 丸めにより、返される結果の絶対値が増える場合、先頭の「9」の桁に対して桁の繰上げを実行することで新しい桁位置を作成できます。 たとえば、999.9という値を切り上げて3桁に丸めると、1000と等しくなり、これは100×101として表現されます。 このような場合、新しい「1」が返される結果の先頭の桁位置になります。

論理的に正確な結果のほか、各算術演算には結果を表現するために優先されるスケールがあります。 各演算の優先スケールを、次の表に示します。

算術演算の結果で優先されるスケール
演算優先される結果のスケール
加算max(addend.scale(), augend.scale())
減算max(minuend.scale(), subtrahend.scale())
乗算multiplier.scale() + multiplicand.scale()
除算dividend.scale() - divisor.scale()
平方根radicand.scale()/2
これらのスケールは、正確な算術結果を返すメソッドによってだけ使用されます。ただし、正確な除算では、正確な結果の桁数が多い可能性があるため、より大きなスケールを使用する必要がある場合があります。 たとえば、1/320.03125です。

丸めの前は、論理的に正確な中間結果のスケールがその演算の優先スケールです。 正確な数値結果をprecision桁で表現できない場合、返す桁セットが丸めにより選択され、その結果のスケールは中間結果のスケールから、実際に返されるprecision桁を表すことのできる最小のスケールに縮小されます。 正確な結果がprecision桁で表現できる場合、その結果の表現は優先スケールにもっとも近いスケールで返されます。 特に、正確に表現可能な商は、末尾の0を削除し、スケールを小さくすることで、precision桁よりも少ない桁で表現できます。 たとえば、floor丸めモードを使用した3桁への丸めでは、次のようになります。
19/100 = 0.19 // integer=19, scale=2
ただし、次も成り立ちます。
21/110 = 0.190 // integer=190, scale=3

加算、減算、および乗算では、スケールの縮小は、正確な結果の破棄される桁位置の数と等しくなる点に注意してください。 丸めによる桁の繰上げで新しい上位の桁位置が作成される場合、新しい桁位置が作成されないと、結果の追加された桁は破棄されます。

ほかのメソッドは、少し異なる丸めセマンティックスを持つ可能性があります。 たとえば、指定されたアルゴリズムを使用するpowメソッドの結果は、丸められた数学的結果と、最終桁の1単位以上、つまり1 ulp以上異なる場合があります。

BigDecimalのスケール操作には、スケーリング/丸め演算と小数点移動演算の2種類があります。 スケーリング/丸め演算(setScaleround)は、値がオペランドの値とほぼ(または正確に)等しいがスケールまたは精度は指定された値であるBigDecimalを返します。このスケールまたは精度により、値に対して最小限の影響で、格納される数値の精度が上下します。 小数点移動演算(movePointLeftmovePointRight)は、指定した方向に指定した桁だけ小数点を移動することによりオペランドから作成されるBigDecimalを返します。

説明をわかりやすく簡潔にするために、BigDecimalメソッドの説明では全体を通して擬似コードを使用します。 擬似コード式(i+j)は、「値がBigDecimal iの値とBigDecimal jの値の和であるBigDecimal」を示します。 擬似コード式(i == j)は、「BigDecimal iBigDecimal jと同じ値を表す場合にだけtrueであること」を示します。 ほかの擬似コード式も同じように解釈されます。 角カッコは、BigDecimal値を定義する特別なBigIntegerとスケールのペアを表すために使用されます。たとえば、[19, 2]は、スケール2を持つ0.19と数値的に等しいBigDecimalです。

このクラスのメソッドおよびコンストラクタはすべて、入力パラメータに対してnullオブジェクト参照が渡されるとNullPointerExceptionをスローします。

APIのノート:
BigDecimalオブジェクトがSortedMapのキーとして、またはBigDecimal 「自然順序付け」「equalsと矛盾」なのでSortedSetの要素として使用される場合は注意が必要です。 詳細については、ComparableSortedMapまたはSortedSetを参照してください。
導入されたバージョン:
1.1
関連項目:
BigInteger, MathContext, RoundingMode, SortedMap, SortedSet, 直列化された形式
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static BigDecimal
    スケール0の値1です。
    static int
    非推奨。
    代わりにRoundingMode.CEILINGを使用してください。
    static int
    非推奨。
    代わりにRoundingMode.DOWNを使用してください。
    static int
    非推奨。
    代わりにRoundingMode.FLOORを使用してください。
    static int
    非推奨。
    代わりにRoundingMode.HALF_DOWNを使用してください。
    static int
    非推奨。
    代わりにRoundingMode.HALF_EVENを使用してください。
    static int
    非推奨。
    代わりにRoundingMode.HALF_UPを使用してください。
    static int
    非推奨。
    代わりにRoundingMode.UNNECESSARYを使用してください。
    static int
    非推奨。
    代わりにRoundingMode.UPを使用してください。
    static BigDecimal
    スケール0の値10です。
    static BigDecimal
    スケール0の値0です。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    BigDecimal​(char[] in)
    BigDecimalの文字配列表現をBigDecimalに変換し、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。
    BigDecimal​(char[] in, int offset, int len)
    BigDecimalの文字配列表現をBigDecimalに変換し、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取り、部分配列の指定を可能にします。
    BigDecimal​(char[] in, int offset, int len, MathContext mc)
    部分配列の指定を可能にし、コンテキスト設定に従った丸めを使用しつつ、BigDecimalの文字配列表現をBigDecimalに変換して、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。
    BigDecimal​(char[] in, MathContext mc)
    BigDecimalの文字配列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。
    BigDecimal​(double val)
    doubledoubleのバイナリ浮動小数点値の正確な10進数表現であるBigDecimalに変換します。
    BigDecimal​(double val, MathContext mc)
    コンテキスト設定に従った丸めを使用して、doubleBigDecimalに変換します。
    BigDecimal​(int val)
    intBigDecimalに変換します。
    BigDecimal​(int val, MathContext mc)
    コンテキスト設定に従った丸めを使用して、intBigDecimalに変換します。
    BigDecimal​(long val)
    longBigDecimalに変換します。
    BigDecimal​(long val, MathContext mc)
    コンテキスト設定に従った丸めを使用して、longBigDecimalに変換します。
    BigDecimalの文字列表現をBigDecimalに変換します。
    BigDecimalの文字列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字列をBigDecimal(String)コンストラクタとして受け取ります。
    BigIntegerBigDecimalに変換します。
    BigDecimal​(BigInteger unscaledVal, int scale)
    BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。
    BigDecimal​(BigInteger unscaledVal, int scale, MathContext mc)
    コンテキスト設定に従った丸めを使用して、BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。
    コンテキスト設定に従った丸めを使用して、BigIntegerBigDecimalに変換します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abs()
    値がこのBigDecimalの絶対値でスケールがthis.scale()であるBigDecimalを返します。
    コンテキスト設定に従った丸めを使用して、値がこのBigDecimalの絶対値であるBigDecimalを返します。
    add​(BigDecimal augend)
    値が(this+augend)でスケールがmax(this.scale(), augend.scale())であるBigDecimalを返します。
    add​(BigDecimal augend, MathContext mc)
    コンテキスト設定に従った丸めを使用して、値が(this+augend)であるBigDecimalを返します。
    byte
    このBigDecimalbyteに変換し、失われた情報がないかどうかを確認します。
    int
    このBigDecimalを指定されたBigDecimalと比較します。
    divide​(BigDecimal divisor)
    値が(this /divisor)で優先スケールが(this.scale() - divisor.scale())であるBigDecimalを返します。(小数点以下が無限となるため)正確な商を表現できない場合、ArithmeticExceptionがスローされます。
    divide​(BigDecimal divisor, int roundingMode)
    非推奨。
    このdivide(BigDecimal, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。
    divide​(BigDecimal divisor, int scale, int roundingMode)
    非推奨。
    このdivide(BigDecimal, int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。
    divide​(BigDecimal divisor, int scale, RoundingMode roundingMode)
    値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。
    divide​(BigDecimal divisor, MathContext mc)
    コンテキスト設定に従った丸めを使用して、値が(this /divisor)であるBigDecimalを返します。
    divide​(BigDecimal divisor, RoundingMode roundingMode)
    値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。
    divideToIntegralValueの結果とそれに続く2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。
    コンテキスト設定に従った丸めを使用して計算されたdivideToIntegralValueの結果と、2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。
    値が丸められた商(this /divisor)の整数部であるBigDecimalを返します。
    値が(this /divisor)の整数部であるBigDecimalを返します。
    double
    このBigDecimaldoubleに変換します。
    boolean
    equals​(Object x)
    このBigDecimalが指定されたObjectと同じかどうか比較します。
    float
    このBigDecimalfloatに変換します。
    int
    このBigDecimalのハッシュ・コードを返します。
    int
    このBigDecimalintに変換します。
    int
    このBigDecimalintに変換し、失われた情報がないかどうかを確認します。
    long
    このBigDecimallongに変換します。
    long
    このBigDecimallongに変換し、失われた情報がないかどうかを確認します。
    max​(BigDecimal val)
    このBigDecimalvalの最大値を返します。
    min​(BigDecimal val)
    このBigDecimalvalの最小値を返します。
    movePointLeft​(int n)
    小数点をn桁左へ移動してこれに等しいBigDecimalを返します。
    movePointRight​(int n)
    小数点をn桁右へ移動してこれに等しいBigDecimalを返します。
    multiply​(BigDecimal multiplicand)
    値が(this×multiplicand)でスケールが(this.scale()+multiplicand.scale())であるBigDecimalを返します。
    multiply​(BigDecimal multiplicand, MathContext mc)
    コンテキスト設定に従った丸めを使用して、値が(this×multiplicand)であるBigDecimalを返します。
    値が(-this)でスケールがthis.scale()であるBigDecimalを返します。
    コンテキスト設定に従った丸めを使用して、値が(-this)であるBigDecimalを返します。
    値が(+this)でスケールがthis.scale()であるBigDecimalを返します。
    コンテキスト設定に従った丸めを使用して、値が(+this)であるBigDecimalを返します。
    pow​(int n)
    値が(thisn)であるBigDecimalを返します。累乗は、精度の制限なしで正確に計算されます。
    pow​(int n, MathContext mc)
    値が(thisn)であるBigDecimalを返します。
    int
    このBigDecimal精度を返します。
    remainder​(BigDecimal divisor)
    値が(this % divisor)であるBigDecimalを返します。
    remainder​(BigDecimal divisor, MathContext mc)
    コンテキスト設定に従った丸めを使用して、値が(this % divisor)であるBigDecimalを返します。
    MathContext設定に従って丸められたBigDecimalを返します。
    int
    このBigDecimalスケールを返します。
    数値が(this * 10n)に等しいBigDecimalを返します。
    setScale​(int newScale)
    スケールが指定された値であり、値がこのBigDecimalと同じ数値であるBigDecimalを返します。
    setScale​(int newScale, int roundingMode)
    非推奨。
    このsetScale(int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。
    setScale​(int newScale, RoundingMode roundingMode)
    スケールが指定された値であり、かつスケールなしの値が、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗の積または商により決定されるBigDecimalを返します。
    short
    このBigDecimalshortに変換し、失われた情報がないかどうかを確認します。
    int
    このBigDecimalの符号要素を返します。
    コンテキスト設定に従って四捨五入して、thisの平方根に対する近似値を返します。
    数値はこれに等しいが、末尾の0が表現から削除されたBigDecimalを返します。
    subtract​(BigDecimal subtrahend)
    値が(this - subtrahend)でスケールがmax(this.scale(), subtrahend.scale())であるBigDecimalを返します。
    subtract​(BigDecimal subtrahend, MathContext mc)
    コンテキスト設定に従った丸めを使用して、値が(this - subtrahend)であるBigDecimalを返します。
    このBigDecimalBigIntegerに変換します。
    このBigDecimalBigIntegerに変換し、失われた情報がないかどうかを確認します。
    指数が必要な場合、技術表記法で、このBigDecimalの文字列表現を返します。
    指数フィールドなしで、このBigDecimalの文字列表現を返します。
    指数が必要な場合、科学表記法で、このBigDecimalの文字列表現を返します。
    ulp()
    このBigDecimalのulp (最終桁単位)のサイズを返します。
    値がこのBigDecimalスケールなしの値であるBigIntegerを返します。
    static BigDecimal
    valueOf​(double val)
    Double.toString(double)メソッドで提供されるdoubleの正規の文字列表現を使用して、doubleBigDecimalに変換します。
    static BigDecimal
    valueOf​(long val)
    long値をスケールが0のBigDecimalに変換します。
    static BigDecimal
    valueOf​(long unscaledVal, int scale)
    longのスケールなしの値とintのスケールをBigDecimalに変換します。

    クラス java.lang.Numberで宣言されたメソッド

    byteValue, shortValue

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • ZERO

      public static final BigDecimal ZERO
      スケール0の値0です。
      導入されたバージョン:
      1.5
    • ONE

      public static final BigDecimal ONE
      スケール0の値1です。
      導入されたバージョン:
      1.5
    • TEN

      public static final BigDecimal TEN
      スケール0の値10です。
      導入されたバージョン:
      1.5
    • ROUND_UP

      @Deprecated(since="9") public static final int ROUND_UP
      非推奨。
      代わりにRoundingMode.UPを使用してください。
      0から離れるように丸めるモードです。 破棄される0以外の小数部に先行する桁を常に増分します。 この丸めモードは、計算された値の絶対値を減らしません。
      関連項目:
      定数フィールド値
    • ROUND_DOWN

      @Deprecated(since="9") public static final int ROUND_DOWN
      非推奨。
      代わりにRoundingMode.DOWNを使用してください。
      0に近づくように丸めるモードです。 破棄される小数部に先行する桁を増分しません(つまり切り捨て)。 この丸めモードは、計算された値の絶対値を増やしません。
      関連項目:
      定数フィールド値
    • ROUND_CEILING

      @Deprecated(since="9") public static final int ROUND_CEILING
      非推奨。
      代わりにRoundingMode.CEILINGを使用してください。
      正の無限大に近づくように丸めるモードです。 BigDecimalが正の場合はROUND_UPのように動作し、負の場合はROUND_DOWNのように動作します。 この丸めモードは、計算された値を減らしません。
      関連項目:
      定数フィールド値
    • ROUND_FLOOR

      @Deprecated(since="9") public static final int ROUND_FLOOR
      非推奨。
      代わりにRoundingMode.FLOORを使用してください。
      負の無限大に近づくように丸めるモードです。 BigDecimalが正の場合はROUND_DOWNのように動作し、負の場合はROUND_UPのように動作します。 この丸めモードは、計算された値を増やしません。
      関連項目:
      定数フィールド値
    • ROUND_HALF_UP

      @Deprecated(since="9") public static final int ROUND_HALF_UP
      非推奨。
      代わりにRoundingMode.HALF_UPを使用してください。
      「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は切り上げます)。 破棄される小数部が0.5以上の場合はROUND_UPのように、それ以外の場合はROUND_DOWNのように動作します。 これは我々の大半が小学校で習った丸めモードのことです。
      関連項目:
      定数フィールド値
    • ROUND_HALF_DOWN

      @Deprecated(since="9") public static final int ROUND_HALF_DOWN
      非推奨。
      代わりにRoundingMode.HALF_DOWNを使用してください。
      「もっとも近い数字」に丸める丸めモードです(両隣りの数字が等距離の場合は切り捨てます)。 破棄される小数部が0.5を超える場合はROUND_UPのように、それ以外の場合はROUND_DOWNのように動作します。
      関連項目:
      定数フィールド値
    • ROUND_HALF_EVEN

      @Deprecated(since="9") public static final int ROUND_HALF_EVEN
      非推奨。
      代わりにRoundingMode.HALF_EVENを使用してください。
      「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は偶数側に丸めます)。 破棄する小数部の左側の桁が奇数の場合はROUND_HALF_UPのように、偶数の場合はROUND_HALF_DOWNのように動作します。 この丸めモードは、連続する計算で繰返し適用される場合に累積エラーを最小限にします。
      関連項目:
      定数フィールド値
    • ROUND_UNNECESSARY

      @Deprecated(since="9") public static final int ROUND_UNNECESSARY
      非推奨。
      代わりにRoundingMode.UNNECESSARYを使用してください。
      要求される演算の結果が正確であり、丸めが必要でないことを表す丸めモードです。 この丸めモードが結果が正確でない演算で指定される場合は、ArithmeticExceptionがスローされます。
      関連項目:
      定数フィールド値
  • コンストラクタの詳細

    • BigDecimal

      public BigDecimal(char[] in, int offset, int len)
      BigDecimalの文字配列表現をBigDecimalに変換し、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取り、部分配列の指定を可能にします。
      実装上のノート:
      文字配列が文字配列内ですでに使用可能な場合、このコンストラクタを使用する方がchar配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。
      パラメータ:
      in - 文字のソースであるchar配列。
      offset - 調べる配列の最初の文字。
      len - 検討する文字数。
      例外:
      NumberFormatException - inBigDecimalの有効な表現でない場合、または定義された部分配列が完全にin内にない場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(char[] in, int offset, int len, MathContext mc)
      部分配列の指定を可能にし、コンテキスト設定に従った丸めを使用しつつ、BigDecimalの文字配列表現をBigDecimalに変換して、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。
      実装上のノート:
      文字配列が文字配列内ですでに使用可能な場合、このコンストラクタを使用する方がchar配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。
      パラメータ:
      in - 文字のソースであるchar配列。
      offset - 調べる配列の最初の文字。
      len - 検討する文字数。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      NumberFormatException - inBigDecimalの有効な表現でない場合、または定義された部分配列が完全にin内にない場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(char[] in)
      BigDecimalの文字配列表現をBigDecimalに変換し、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。
      実装上のノート:
      文字配列がすでに文字配列として使用可能な場合、このコンストラクタを使用する方がchar配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。
      パラメータ:
      in - 文字のソースであるchar配列。
      例外:
      NumberFormatException - inBigDecimalの有効な表現でない場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(char[] in, MathContext mc)
      BigDecimalの文字配列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。
      実装上のノート:
      文字配列がすでに文字配列として使用可能な場合、このコンストラクタを使用する方がchar配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。
      パラメータ:
      in - 文字のソースであるchar配列。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      NumberFormatException - inBigDecimalの有効な表現でない場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(String val)
      BigDecimalの文字列表現をBigDecimalに変換します。 文字列表現は、任意の符号「+」(「\u002B」)または「-」(「\u002D」)と、それに続く0桁以上の10進数字(「整数部」)の列で構成され、任意で小数部または指数が付随します。

      小数部は、小数点と0桁以上の10進数字で構成されます。 この文字列では、整数部または小数部が少なくとも1桁は必要です。 符号、整数部、分数部からなる数字は有効数字と呼ばれます。

      指数は、「e」(「\u0065」)または「E」(「\u0045」)という文字に、1つ以上の10進数字が続くかたちで構成されます。 指数値は -Integer.MAX_VALUE (Integer.MIN_VALUE+1)からInteger.MAX_VALUEの範囲の値である必要があります。

      つまり、このコンストラクタが受け入れる文字列は次の文法によって記述されます。

      BigDecimalString:
      Signopt Significand Exponentopt
      Sign:
      +
      -
      Significand:
      IntegerPart FractionPartopt
      . FractionPart
      IntegerPart
      IntegerPart:
      Digits
      FractionPart:
      Digits
      Exponent:
      ExponentIndicator SignedInteger
      ExponentIndicator:
      e
      E
      SignedInteger:
      Signopt Digits
      Digits:
      Digit
      Digits Digit
      Digit:
      Character.isDigit(char)trueを返す任意の文字(0、1、2など)

      返されるBigDecimalのスケールは、小数部の桁数または0 (文字列に小数部がない場合)となり、指数を調整します。文字列に指数がある場合、スケールから指数が減算されます。 結果のスケール値は、Integer.MIN_VALUEからInteger.MAX_VALUEの範囲の値である必要があります。

      文字から数字へのマッピングはCharacter.digit(char, int)で提供され、基数10への変換に設定されます。 Stringには、不適切な文字(空白など)を含めることはできません。

      例:
      返されるBigDecimalの値は、significand×10 exponentと等しくなります。
      左側に各文字列、右側に結果の表現[BigInteger, scale]が示されます。

       "0"            [0,0]
       "0.00"         [0,2]
       "123"          [123,0]
       "-123"         [-123,0]
       "1.23E3"       [123,-1]
       "1.23E+3"      [123,-1]
       "12.3E+7"      [123,-6]
       "12.0"         [120,1]
       "12.3"         [123,1]
       "0.00123"      [123,5]
       "-1.23E-12"    [-123,14]
       "1234.5E-4"    [12345,5]
       "0E+7"         [0,-7]
       "-0"           [0,0]
       

      APIのノート:
      floatおよびdouble NaNおよび±Infinity以外の値の場合、このコンストラクタはFloat.toString(float)およびDouble.toString(double)から返される値と互換性があります。 この方法では、BigDecimal(double)コンストラクタで予測ができないことによる影響を受けないため、通常はfloatまたはdoubleをBigDecimalに変換する望ましい方法です。
      パラメータ:
      val - BigDecimalの文字列表現。
      例外:
      NumberFormatException - valBigDecimalの有効な表現でない場合。
    • BigDecimal

      public BigDecimal(String val, MathContext mc)
      BigDecimalの文字列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字列をBigDecimal(String)コンストラクタとして受け取ります。
      パラメータ:
      val - BigDecimalの文字列表現。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      NumberFormatException - valがBigDecimalの有効な表現でない場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(double val)
      doubledoubleのバイナリ浮動小数点値の正確な10進数表現であるBigDecimalに変換します。 返されたBigDecimalのスケールは、(10scale×val)が整数となるような最小値です。

      ノート:

      1. このコンストラクタの結果は予想外である可能性があります。 Javaでnew BigDecimal(0.1)と記述すると、0.1と正確に等しいBigDecimal (スケール1の、スケールなしの値1)が作成されると考えるかもしれませんが、実際には0.1000000000000000055511151231257827021181583404541015625と等しくなります。 これは、0.1をdoubleとして(または有限長2進小数として)正確に表現できないためです。 したがって、コンストラクタに渡される値は正確に0.1と等しいわけではありません。
      2. 一方、Stringコンストラクタは完全に予測可能です。new BigDecimal("0.1")と記述すると、予期したとおり正確に 0.1と等しいBigDecimalが作成されます。 そのため、通常は、これよりもStringコンストラクタを優先して使用することをお薦めします。
      3. BigDecimalのソースとしてdoubleを使用する必要がある場合、このコンストラクタは正確な変換を行うことに注意してください。このコンストラクタでは、Double.toString(double)メソッドとBigDecimal(String)コンストラクタを使用してdoubleStringに変換したときと同じ結果にはなりません。 そのような結果を得るには、static valueOf(double)メソッドを使用します。

      パラメータ:
      val - BigDecimalに変換するdouble値。
      例外:
      NumberFormatException - valが無限かNaNである場合。
    • BigDecimal

      public BigDecimal(double val, MathContext mc)
      コンテキスト設定に従った丸めを使用して、doubleBigDecimalに変換します。 BigDecimalのスケールは、(10scale×val)が整数であるような最小値です。

      このコンストラクタの結果は予想外である可能性があるため、一般的に使用はお薦めしません。BigDecimal(double)コンストラクタのノートを参照してください。

      パラメータ:
      val - BigDecimalに変換するdouble値。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、RoundingModeがUNNECESSARYの場合。
      NumberFormatException - valが無限かNaNである場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(BigInteger val)
      BigIntegerBigDecimalに変換します。 BigDecimalのスケールは0です。
      パラメータ:
      val - BigDecimalに変換するBigInteger値。
    • BigDecimal

      public BigDecimal(BigInteger val, MathContext mc)
      コンテキスト設定に従った丸めを使用して、BigIntegerBigDecimalに変換します。 BigDecimalのスケールは0です。
      パラメータ:
      val - BigDecimalに変換するBigInteger値。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(BigInteger unscaledVal, int scale)
      BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。 BigDecimalの値は(unscaledVal×10-scale)です。
      パラメータ:
      unscaledVal - BigDecimalのスケールなしの値。
      scale - BigDecimalのスケール。
    • BigDecimal

      public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
      コンテキスト設定に従った丸めを使用して、BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。 BigDecimalの値は(unscaledVal×10-scale)であり、precisionと丸めモード設定に従って丸められます。
      パラメータ:
      unscaledVal - BigDecimalのスケールなしの値。
      scale - BigDecimalのスケール。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(int val)
      intBigDecimalに変換します。 BigDecimalのスケールは0です。
      パラメータ:
      val - BigDecimalに変換するint値。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(int val, MathContext mc)
      コンテキスト設定に従った丸めを使用して、intBigDecimalに変換します。 丸めを行う前のBigDecimalのスケールは0です。
      パラメータ:
      val - BigDecimalに変換するint値。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(long val)
      longBigDecimalに変換します。 BigDecimalのスケールは0です。
      パラメータ:
      val - BigDecimalに変換するlong値。
      導入されたバージョン:
      1.5
    • BigDecimal

      public BigDecimal(long val, MathContext mc)
      コンテキスト設定に従った丸めを使用して、longBigDecimalに変換します。 丸めを行う前のBigDecimalのスケールは0です。
      パラメータ:
      val - BigDecimalに変換するlong値。
      mc - 使用するコンテキスト。
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
  • メソッドの詳細

    • valueOf

      public static BigDecimal valueOf(long unscaledVal, int scale)
      longのスケールなしの値とintのスケールをBigDecimalに変換します。
      APIのノート:
      この静的ファクトリ・メソッドは、頻繁に使用されるBigDecimal値の再利用が可能なため、(long, int)コンストラクタよりも優先されて提供されます。
      パラメータ:
      unscaledVal - BigDecimalのスケールなしの値。
      scale - BigDecimalのスケール。
      戻り値:
      値が(unscaledVal×10-scale)BigDecimal
    • valueOf

      public static BigDecimal valueOf(long val)
      long値をスケールが0のBigDecimalに変換します。
      APIのノート:
      この静的ファクトリ・メソッドは、頻繁に使用されるBigDecimal値の再利用が可能なため、(long)コンストラクタよりも優先されて提供されます。
      パラメータ:
      val - BigDecimalの値。
      戻り値:
      値がvalであるBigDecimal
    • valueOf

      public static BigDecimal valueOf(double val)
      Double.toString(double)メソッドで提供されるdoubleの正規の文字列表現を使用して、doubleBigDecimalに変換します。
      APIのノート:
      double (またはfloat)をBigDecimalに変換するには、BigDecimalDouble.toString(double)を使用した結果から構築された結果と同じ値にするのが優先される方法です。
      パラメータ:
      val - BigDecimalに変換するdouble
      戻り値:
      値がvalと等しい、またはほぼ等しいBigDecimal
      例外:
      NumberFormatException - valが無限かNaNである場合。
      導入されたバージョン:
      1.5
    • add

      public BigDecimal add(BigDecimal augend)
      値が(this+augend)でスケールがmax(this.scale(), augend.scale())であるBigDecimalを返します。
      パラメータ:
      augend - このBigDecimalに加算する値。
      戻り値:
      this + augend
    • add

      public BigDecimal add(BigDecimal augend, MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(this+augend)であるBigDecimalを返します。 どちらかの数値が0で精度設定が0以外である場合、必要に応じて丸められたほかの数値が結果として使用されます。
      パラメータ:
      augend - このBigDecimalに加算する値。
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis+augend
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • subtract

      public BigDecimal subtract(BigDecimal subtrahend)
      値が(this - subtrahend)でスケールがmax(this.scale(), subtrahend.scale())であるBigDecimalを返します。
      パラメータ:
      subtrahend - このBigDecimalから減算する値。
      戻り値:
      this - subtrahend
    • subtract

      public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(this - subtrahend)であるBigDecimalを返します。 subtrahendが0である場合、必要に応じて丸められたthisの値が結果として使用されます。 thisが0である場合、結果はsubtrahend.negate(mc)です。
      パラメータ:
      subtrahend - このBigDecimalから減算する値。
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis - subtrahend
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • multiply

      public BigDecimal multiply(BigDecimal multiplicand)
      値が(this×multiplicand)でスケールが(this.scale()+multiplicand.scale())であるBigDecimalを返します。
      パラメータ:
      multiplicand - このBigDecimalで乗算する値。
      戻り値:
      this * multiplicand
    • multiply

      public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(this×multiplicand)であるBigDecimalを返します。
      パラメータ:
      multiplicand - このBigDecimalで乗算する値。
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis * multiplicand
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • divide

      @Deprecated(since="9")public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
      非推奨。
      このdivide(BigDecimal, int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。
      値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。 丸めを行い、指定したスケールで結果を生成する必要がある場合は、指定した丸めモードが適用されます。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      scale - 返されるBigDecimalの商のスケール。
      roundingMode - 適用する丸めモード。
      戻り値:
      this / divisor
      例外:
      ArithmeticException - divisorが0で、roundingMode==ROUND_UNNECESSARYであり、指定したスケールが除算の結果を正確に表すには十分でない場合。
      IllegalArgumentException - roundingModeが有効な丸めモードを表さない場合。
      関連項目:
      ROUND_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_UNNECESSARY
    • divide

      public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
      値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。 丸めを行い、指定したスケールで結果を生成する必要がある場合は、指定した丸めモードが適用されます。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      scale - 返されるBigDecimalの商のスケール。
      roundingMode - 適用する丸めモード。
      戻り値:
      this / divisor
      例外:
      ArithmeticException - divisorが0で、roundingMode==RoundingMode.UNNECESSARYであり、指定したスケールが除算の結果を正確に表すには十分でない場合。
      導入されたバージョン:
      1.5
    • divide

      @Deprecated(since="9")public BigDecimal divide(BigDecimal divisor, int roundingMode)
      非推奨。
      このdivide(BigDecimal, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。
      値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。 丸めを行い、特定のスケールで結果を生成する必要がある場合は、指定された丸めモードが適用されます。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      roundingMode - 適用する丸めモード。
      戻り値:
      this / divisor
      例外:
      ArithmeticException - divisor==0である場合、またはroundingMode==ROUND_UNNECESSARYであり、this.scale()が除算の結果を正確に表すには十分でない場合。
      IllegalArgumentException - roundingModeが有効な丸めモードを表さない場合。
      関連項目:
      ROUND_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_UNNECESSARY
    • divide

      public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
      値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。 丸めを行い、特定のスケールで結果を生成する必要がある場合は、指定された丸めモードが適用されます。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      roundingMode - 適用する丸めモード。
      戻り値:
      this / divisor
      例外:
      ArithmeticException - divisor==0である場合、またはroundingMode==RoundingMode.UNNECESSARYであり、this.scale()が除算の結果を正確に表すには十分でない場合。
      導入されたバージョン:
      1.5
    • divide

      public BigDecimal divide(BigDecimal divisor)
      値が(this /divisor)で優先スケールが(this.scale() - divisor.scale())であるBigDecimalを返します。(小数点以下が無限となるため)正確な商を表現できない場合、ArithmeticExceptionがスローされます。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      戻り値:
      this / divisor
      例外:
      ArithmeticException - 正確な商の小数点以下が無限である場合
      導入されたバージョン:
      1.5
    • divide

      public BigDecimal divide(BigDecimal divisor, MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(this /divisor)であるBigDecimalを返します。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis /divisor
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYまたはmc.precision == 0で、かつ商の小数点以下が無限である場合。
      導入されたバージョン:
      1.5
    • divideToIntegralValue

      public BigDecimal divideToIntegralValue(BigDecimal divisor)
      値が丸められた商(this /divisor)の整数部であるBigDecimalを返します。 結果の優先スケールは(this.scale() - divisor.scale())です。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      戻り値:
      this /divisorの整数部。
      例外:
      ArithmeticException - divisor==0の場合
      導入されたバージョン:
      1.5
    • divideToIntegralValue

      public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
      値が(this /divisor)の整数部であるBigDecimalを返します。 正確な商の整数部は丸めモードに依存しないため、丸めモードはこのメソッドにより返される値に影響を及ぼしません。 結果の優先スケールは(this.scale() - divisor.scale())です。 正確な商の整数部にmc.precisionよりも多くの桁が必要な場合、ArithmeticExceptionがスローされます。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      mc - 使用するコンテキスト。
      戻り値:
      this /divisorの整数部。
      例外:
      ArithmeticException - divisor==0の場合
      ArithmeticException - mc.precisionが0より大きく、結果にmc.precisionよりも桁数の多い精度が必要な場合。
      導入されたバージョン:
      1.5
    • remainder

      public BigDecimal remainder(BigDecimal divisor)
      値が(this % divisor)であるBigDecimalを返します。

      剰余は、this.subtract(this.divideToIntegralValue(divisor).multiply(divisor))で得られます。 これはモジュロ演算(結果は否定的な可能性があります)ではないことに注意してください。

      パラメータ:
      divisor - このBigDecimalを除算する値。
      戻り値:
      this % divisor
      例外:
      ArithmeticException - divisor==0の場合
      導入されたバージョン:
      1.5
    • remainder

      public BigDecimal remainder(BigDecimal divisor, MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(this % divisor)であるBigDecimalを返します。 MathContext設定は、剰余の計算に使用する暗黙的な除算に影響を及ぼします。 定義の示すとおり、剰余の計算自体は正確です。 そのため、剰余はmc.getPrecision()よりも多くの桁を含む可能性があります。

      剰余は、this.subtract(this.divideToIntegralValue(divisor, mc).multiply(divisor))で得られます。 これはモジュロ演算ではない(負の結果が可能)であることに留意してください。

      パラメータ:
      divisor - このBigDecimalを除算する値。
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis % divisor
      例外:
      ArithmeticException - divisor==0の場合
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合、またはmc.precisionが0より大きく、this.divideToIntgralValue(divisor)の結果にmc.precisionよりも桁数の多い精度が必要な場合。
      導入されたバージョン:
      1.5
      関連項目:
      divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
    • divideAndRemainder

      public BigDecimal[] divideAndRemainder(BigDecimal divisor)
      divideToIntegralValueの結果とそれに続く2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。

      整数の商と剰余の両方が必要な場合、divideToIntegralValueメソッドとremainderメソッドを別々に使用するより、除算を1回だけ実行すればよいこのメソッドの方が高速であることに留意してください。

      パラメータ:
      divisor - このBigDecimalを除算する値、および計算された剰余。
      戻り値:
      2要素のBigDecimal配列。商(divideToIntegralValueの結果)が最初の要素で、剰余が最後の要素。
      例外:
      ArithmeticException - divisor==0の場合
      導入されたバージョン:
      1.5
      関連項目:
      divideToIntegralValue(java.math.BigDecimal, java.math.MathContext), remainder(java.math.BigDecimal, java.math.MathContext)
    • divideAndRemainder

      public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
      コンテキスト設定に従った丸めを使用して計算されたdivideToIntegralValueの結果と、2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。

      整数の商と剰余の両方が必要な場合、divideToIntegralValueメソッドとremainderメソッドを別々に使用するより、除算を1回だけ実行すればよいこのメソッドの方が高速であることに留意してください。

      パラメータ:
      divisor - このBigDecimalを除算する値、および計算された剰余。
      mc - 使用するコンテキスト。
      戻り値:
      2要素のBigDecimal配列。商(divideToIntegralValueの結果)が最初の要素で、剰余が最後の要素。
      例外:
      ArithmeticException - divisor==0の場合
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合、またはmc.precisionが0より大きく、this.divideToIntgralValue(divisor)の結果にmc.precisionよりも桁数の多い精度が必要な場合。
      導入されたバージョン:
      1.5
      関連項目:
      divideToIntegralValue(java.math.BigDecimal, java.math.MathContext), remainder(java.math.BigDecimal, java.math.MathContext)
    • sqrt

      public BigDecimal sqrt(MathContext mc)
      コンテキスト設定に従って四捨五入して、thisの平方根に対する近似値を返します。

      返される結果の優先スケールはthis.scale()/2に等しい。 返される結果の値は、問題の精度の正確な10進値の1 ulp内に常にあります。 丸めモードがHALF_UPHALF_DOWN、またはHALF_EVENの場合、結果は正確な10進値の半分のulpになります。

      特例として:

      • ZEROに数値的に等しい数値の平方根は、数値的には上記の一般規則に従った優先縮尺のZEROに等しい。 特に、ZEROの場合、ZERO.sqrt(mc).equals(ZERO)は任意のMathContextを引数としてtrueとなります。

      パラメータ:
      mc - 使用するコンテキスト。
      戻り値:
      thisの平方根です。
      例外:
      ArithmeticException - thisが0より小さい場合。
      ArithmeticException - 正確な結果が(mc.getPrecision()==0)にリクエストされ、正確な結果の有限小数の展開がない場合
      ArithmeticException - (mc.getRoundingMode()==RoundingMode.UNNECESSARY)と正確な結果がmc.getPrecision()数字に収まらない場合。
      導入されたバージョン:
      9
      関連項目:
      BigInteger.sqrt()
    • pow

      public BigDecimal pow(int n)
      値が(thisn)であるBigDecimalを返します。累乗は、精度の制限なしで正確に計算されます。

      パラメータnは、0から999999999の範囲に収まっている必要があります。 ZERO.pow(0)ONEを返します。 将来のリリースでは、このメソッドの指数の許容範囲が拡張される可能性があります。

      パラメータ:
      n - このBigDecimalの累乗。
      戻り値:
      thisn
      例外:
      ArithmeticException - nが範囲外の場合。
      導入されたバージョン:
      1.5
    • pow

      public BigDecimal pow(int n, MathContext mc)
      値が(thisn)であるBigDecimalを返します。 現在の実装では、コンテキスト設定に従った丸めでANSI規格X3.274-1996で定義されたコア・アルゴリズムを使用しています。 一般的に、返された数値は、選択された精度の正確な数値の2 ulp以内です。 将来のリリースでは、誤差の許容範囲を狭め、指数の許容範囲を拡大した別のアルゴリズムを使用する可能性があります。

      X3.274-1996アルゴリズムは、次のとおりです。

      • ArithmeticException例外は次の条件に当てはまる場合にスローされる
        • abs(n) > 999999999
        • mc.precision == 0かつn < 0
        • mc.precision> 0、かつnmc.precisionの10進桁数より大きい
      • nが0の場合、thisが0でもONEが返される。それ以外の場合は、次のようになる
        • nが正の場合、二乗法を繰り返して単一のアキュムレータに入れることで結果が計算される。 アキュムレータを持つ個々の乗算では、mc.precision+elength+1 (elengthn内の10進桁数)に上げた精度を除き、mcと同じ数学コンテキスト設定を使用する。
        • nが負の場合、nが正であるかのように結果が計算される。その後、この値は前述の有効な精度を使用して1より除算される。
        • 正または負の場合の最終的な値が、目標の精度に丸められる。

      パラメータ:
      n - このBigDecimalの累乗。
      mc - 使用するコンテキスト。
      戻り値:
      ANSI standard X3.274-1996アルゴリズムを使用したthisn
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合、またはnが範囲外である場合。
      導入されたバージョン:
      1.5
    • abs

      public BigDecimal abs()
      値がこのBigDecimalの絶対値でスケールがthis.scale()であるBigDecimalを返します。
      戻り値:
      abs(this)
    • abs

      public BigDecimal abs(MathContext mc)
      コンテキスト設定に従った丸めを使用して、値がこのBigDecimalの絶対値であるBigDecimalを返します。
      パラメータ:
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたabs(this)
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • negate

      public BigDecimal negate()
      値が(-this)でスケールがthis.scale()であるBigDecimalを返します。
      戻り値:
      -this
    • negate

      public BigDecimal negate(MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(-this)であるBigDecimalを返します。
      パラメータ:
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められた-this
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
    • plus

      public BigDecimal plus()
      値が(+this)でスケールがthis.scale()であるBigDecimalを返します。

      このBigDecimalを単に返すだけのこのメソッドは、単項マイナス・メソッドnegate()の対称として含まれています。

      戻り値:
      this
      導入されたバージョン:
      1.5
      関連項目:
      negate()
    • plus

      public BigDecimal plus(MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(+this)であるBigDecimalを返します。

      このメソッドの効果は、round(MathContext)メソッドの効果と同じです。

      パラメータ:
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis 0の結果のスケールは0
      例外:
      ArithmeticException - 結果が正確でなく、丸めモードがUNNECESSARYの場合。
      導入されたバージョン:
      1.5
      関連項目:
      round(MathContext)
    • signum

      public int signum()
      このBigDecimalの符号要素を返します。
      戻り値:
      このBigDecimalが負の場合は -1、ゼロの場合は0、正の場合は1。
    • scale

      public int scale()
      このBigDecimalスケールを返します。 0または正の場合、スケールは小数点以下の桁数です。 負の場合、スケールなしの数値に、スケールの正負を逆にした値を指数とする10の累乗を乗算します。 たとえば、-3のスケールでは、スケールなしの値に1000が乗算されます。
      戻り値:
      このBigDecimalのスケール。
    • precision

      public int precision()
      このBigDecimal精度を返します。 精度とは、スケールなしの値の桁数のことです。

      0の精度は1です。

      戻り値:
      このBigDecimalの精度。
      導入されたバージョン:
      1.5
    • unscaledValue

      public BigInteger unscaledValue()
      値がこのBigDecimalスケールなしの値であるBigIntegerを返します。 ((this * 10this.scale())を計算する。)
      戻り値:
      このBigDecimalのスケールなしの値。
      導入されたバージョン:
      1.2
    • round

      public BigDecimal round(MathContext mc)
      MathContext設定に従って丸められたBigDecimalを返します。 精度設定が0の場合、丸めは実行されません。

      このメソッドの効果は、plus(MathContext)メソッドの効果と同じです。

      パラメータ:
      mc - 使用するコンテキスト。
      戻り値:
      MathContext設定に従って丸められたBigDecimal
      例外:
      ArithmeticException - 丸めモードがUNNECESSARYで、BigDecimal演算に丸めが必要な場合。
      導入されたバージョン:
      1.5
      関連項目:
      plus(MathContext)
    • setScale

      public BigDecimal setScale(int newScale, RoundingMode roundingMode)
      スケールが指定された値であり、かつスケールなしの値が、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗の積または商により決定されるBigDecimalを返します。 スケールが演算で減らされる場合、スケールなしの値は(乗算ではなく)除算する必要があり、値が変わる可能性があります。この場合、指定した丸めモードが除算に適用されます。
      APIのノート:
      BigDecimalオブジェクトは不変であるため、setX mutate field Xというメソッドを持つ通常の規約に反して、このメソッドを呼び出すと元のオブジェクトが変更されることはありません。 代わりに、setScaleは適切なスケールを持つオブジェクトを返します。返されたオブジェクトは、新しく割り当てられる場合とそうでない場合があります。
      パラメータ:
      newScale - 返されるBigDecimalの値のスケール。
      roundingMode - 適用する丸めモード。
      戻り値:
      スケールが指定された値のBigDecimal。そのスケールなしの値は、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗との積または商により決定されます。
      例外:
      ArithmeticException - roundingMode==UNNECESSARYであり、指定したスケール演算で丸めが必要な場合。
      導入されたバージョン:
      1.5
      関連項目:
      RoundingMode
    • setScale

      @Deprecated(since="9")public BigDecimal setScale(int newScale, int roundingMode)
      非推奨。
      このsetScale(int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。
      スケールが指定された値であり、かつスケールなしの値が、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗の積または商により決定されるBigDecimalを返します。 スケールが演算で減らされる場合、スケールなしの値は(乗算ではなく)除算する必要があり、値が変わる可能性があります。この場合、指定した丸めモードが除算に適用されます。
      APIのノート:
      BigDecimalオブジェクトは不変であるため、setX mutate field Xというメソッドを持つ通常の規約に反して、このメソッドを呼び出すと元のオブジェクトが変更されることはありません。 代わりに、setScaleは適切なスケールを持つオブジェクトを返します。返されたオブジェクトは、新しく割り当てられる場合とそうでない場合があります。
      パラメータ:
      newScale - 返されるBigDecimalの値のスケール。
      roundingMode - 適用する丸めモード。
      戻り値:
      スケールが指定された値のBigDecimal。そのスケールなしの値は、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗との積または商により決定されます。
      例外:
      ArithmeticException - roundingMode==ROUND_UNNECESSARYであり、指定したスケール演算で丸めが必要な場合。
      IllegalArgumentException - roundingModeが有効な丸めモードを表さない場合。
      関連項目:
      ROUND_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_UNNECESSARY
    • setScale

      public BigDecimal setScale(int newScale)
      スケールが指定された値であり、値がこのBigDecimalと同じ数値である、BigDecimalを返します。 これが不可能な場合、ArithmeticExceptionをスローします。

      通常、この呼出しはスケールの拡張に使用され、その場合には指定されたスケールと正しい値のBigDecimalの存在が保証されます。 値を変更することなく再スケーリングを行うのに十分な0がBigDecimalの小数部(その整数値における10の因数)の最後にあることを呼出し側が認識している場合、この呼出しはスケールの縮小にも使用できます。

      このメソッドはsetScaleの2つの引数を使うバージョンと同じ結果を返しますが、丸めを指定する必要のない場合に、呼出し側は丸めモードを指定する手間を省くことができます。

      APIのノート:
      BigDecimalオブジェクトは不変なので、setX mutate field Xというメソッドを持つ通常の規約に反して、このメソッドを呼び出すと元のオブジェクトが変更されることはありません。 代わりに、setScaleは適切なスケールを持つオブジェクトを返します。返されたオブジェクトは、新しく割り当てられる場合とそうでない場合があります。
      パラメータ:
      newScale - 返されるBigDecimalの値のスケール。
      戻り値:
      スケールが指定された値のBigDecimal。そのスケールなしの値は、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗との積または商により決定されます。
      例外:
      ArithmeticException - 指定したスケール演算で丸めが必要な場合。
      関連項目:
      setScale(int, int), setScale(int, RoundingMode)
    • movePointLeft

      public BigDecimal movePointLeft(int n)
      小数点をn桁左へ移動してこれに等しいBigDecimalを返します。 nが負でない場合は、スケールにnを単に加算します。 nが負の場合は、movePointRight(-n)に等しくなります。 この呼出しによって返されるBigDecimalは、値(this×10-n)およびスケールmax(this.scale()+n, 0)となります。
      パラメータ:
      n - 小数点を左へ移動する桁数。
      戻り値:
      小数点をn桁左へ移動した、これに等しいBigDecimal
      例外:
      ArithmeticException - スケールがオーバーフローする場合。
    • movePointRight

      public BigDecimal movePointRight(int n)
      小数点をn桁右へ移動してこれに等しいBigDecimalを返します。 nが負でない場合は、スケールからnを単に減算します。 nが負の場合は、movePointLeft(-n)に等しくなります。 この呼出しによって返されるBigDecimalは、値(this×10n)およびスケールmax(this.scale()-n, 0)となります。
      パラメータ:
      n - 小数点を右へ移動する桁数。
      戻り値:
      小数点をn桁右へ移動した、これに等しいBigDecimal
      例外:
      ArithmeticException - スケールがオーバーフローする場合。
    • scaleByPowerOfTen

      public BigDecimal scaleByPowerOfTen(int n)
      数値が(this * 10n)に等しいBigDecimalを返します。 結果のスケールは(this.scale() - n)です。
      パラメータ:
      n - スケールを指定する10の累乗の指数
      戻り値:
      数値が(this * 10n)に等しいBigDecimal
      例外:
      ArithmeticException - スケールが32ビット整数の範囲外である場合。
      導入されたバージョン:
      1.5
    • stripTrailingZeros

      public BigDecimal stripTrailingZeros()
      数値はこれに等しいが、末尾の0が表現から削除されたBigDecimalを返します。 たとえば、[6000, 1]と等しい[BigInteger, scale]コンポーネントを持つBigDecimal600.0から末尾のゼロを削除すると、[6, -2]と等しい[BigInteger, scale]コンポーネントを持つ6E2が生成されます。 このBigDecimalの数値が0に等しい場合は、BigDecimal.ZEROが返されます。
      戻り値:
      末尾の0がすべて削除された、数値の等しいBigDecimal
      導入されたバージョン:
      1.5
    • compareTo

      public int compareTo(BigDecimal val)
      このBigDecimalを指定されたBigDecimalと比較します。 このメソッドでは、値は等しいがスケールが異なる2つのBigDecimalオブジェクト(たとえば、2.0と2.00)が等しいと見なされます。 このメソッドは、6つのboolean型の比較演算子(<、==、>、>=、!=、<=)のそれぞれに対する個々のメソッドの代わりに提供されます。 これらの比較を行うには(x.compareTo(y) <op> 0)という組合せをお薦めします。この場合、<op>には6つの比較演算子のうちの1つが入ります。
      定義:
      compareTo、インタフェース: Comparable<BigDecimal>
      パラメータ:
      val - このBigDecimalと比較するBigDecimal
      戻り値:
      このBigDecimalの数値がvalより小さい場合は -1、等しい場合は0、大きい場合は1。
    • equals

      public boolean equals(Object x)
      このBigDecimalが指定されたObjectと同じかどうか比較します。 compareToと違い、このメソッドは、2つのBigDecimalオブジェクトが値もスケールも同じである場合にだけ等しいと見なします(したがって、このメソッドでは2.0と2.00は等しくない)。
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      x - このBigDecimalと比較するObject
      戻り値:
      指定されたObjectBigDecimalで、その値とスケールがこのBigDecimalと等しい場合にだけtrue
      関連項目:
      compareTo(java.math.BigDecimal), hashCode()
    • min

      public BigDecimal min(BigDecimal val)
      このBigDecimalvalの最小値を返します。
      パラメータ:
      val - 最小値の計算に使用する値。
      戻り値:
      このBigDecimalvalのうちで小さい方の値を持つBigDecimal 等しい場合は、compareToメソッドで定義されるように、thisが返されます。
      関連項目:
      compareTo(java.math.BigDecimal)
    • max

      public BigDecimal max(BigDecimal val)
      このBigDecimalvalの最大値を返します。
      パラメータ:
      val - 最大値の計算に使用する値。
      戻り値:
      このBigDecimalvalのうちで大きい方の値を持つBigDecimal 等しい場合は、compareToメソッドで定義されるように、thisが返されます。
      関連項目:
      compareTo(java.math.BigDecimal)
    • hashCode

      public int hashCode()
      このBigDecimalのハッシュ・コードを返します。 値が等しいがスケールが異なる2つのBigDecimalオブジェクト(たとえば、2.0と2.00)のハッシュ・コードは、通常は同じではありません
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      このBigDecimalのハッシュ・コード。
      関連項目:
      equals(Object)
    • toString

      public String toString()
      指数が必要な場合、科学表記法で、このBigDecimalの文字列表現を返します。

      BigDecimalの正規の文字列形式は、次のステップで作成されます。まず、BigDecimalのスケールなしの値の絶対値が、「0」から「9」までの文字を使用した、先頭に0が付かない文字列(基数10)に変換されます(ただし、値が0である場合は、単一の文字「0」が使用される)。

      次に、調整された指数が計算されます。これは、正負を逆にしたスケールに、変換されたスケールなしの値の文字数を加算したものから1を減算したものです。 つまり、-scale+(ulength-1)であり、ulengthは10進数のスケールなしの値の絶対値の長さ(精度)です。

      スケールが0以上で、調整された指数が-6以上である場合、数値は指数表現なしの文字形式に変換されます。 この場合、スケールが0のときは小数点は追加されません。スケールが正のときは、小数点がスケールとともに挿入され、小数点以下の文字数が指定されます。必要に応じて、変換されたスケールなしの値の左に文字「0」が追加されます。 この挿入のあとに小数点に先行する文字がない場合は、先頭に通常の文字「0」が付けられます。

      その他の場合(つまり、スケールが負、または調整された指数が-6未満の場合)、数値は指数表現を使用して文字形式に変換されます。 この場合、変換されたBigIntegerに複数の桁があるとき、最初の桁の後ろに小数点が挿入されます。 次に、変換されたスケールなしの値の後ろに、(挿入された小数点とともに)文字形式の指数が付けられます。これは、文字「E」、およびその直後の調整された指数を文字形式に変換したもので構成されます。 後者は基数10で、先頭に0が付かず、「0」から「9」を使用し、調整された指数が負の場合は必ず先頭に符号文字「-」(「u002D」)、そうでない場合は「+」(「\u002B」)が付いています。

      最後に、スケールなしの値が0未満の場合は、文字列全体の先頭にマイナス符号文字「-」(「\u002D」)が付けられます。 スケールなしの値が0または正の場合、符号文字は付けられません。

      例:

      各表現の左側は[unscaled value, scale]、右側は結果の文字列を示します。

       [123,0]      "123"
       [-123,0]     "-123"
       [123,-1]     "1.23E+3"
       [123,-3]     "1.23E+5"
       [123,1]      "12.3"
       [123,5]      "0.00123"
       [123,10]     "1.23E-8"
       [-123,12]    "-1.23E-10"
       
      ノート:
      1. 区別可能なBigDecimal値とこの変換の結果の間には、1対1のマッピングがあります。 つまり、すべての区別可能なBigDecimal値(スケールなしの値とスケール)は、toStringを使用した結果として、一意の文字列表現を持ちます。 BigDecimal(String)コンストラクタを使用してその文字列表現をBigDecimalに戻すと、元の値が復元されます。
      2. 特定の数値のために生成された文字列は常に同じであり、ロケールによる影響は受けません。 これは、10進数データを交換するための正規の文字列表現、つまりハッシュ表のキーなどとして使用することができることを意味します。ロケールに依存する数値の書式設定と解析は、NumberFormatクラスとそのサブクラスによって処理されます。
      3. 技術表記法での指数を使用した数値表現にはtoEngineeringString()メソッドを使用でき、BigDecimalの丸めには小数点以下の桁数が既知であるsetScaleメソッドを使用できます。
      4. Character.forDigitにより提供される数字から文字へのマッピングが使用されます。

      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このBigDecimalの文字列表現。
      関連項目:
      Character.forDigit(int, int), BigDecimal(java.lang.String)
    • toEngineeringString

      public String toEngineeringString()
      指数が必要な場合、技術表記法で、このBigDecimalの文字列表現を返します。

      toString()メソッドで記述されているように、BigDecimalを表す文字列を返します。ただし、指数表現が使用される場合、0でない値の整数部が1から999の範囲に収まるように、10の累乗は3の倍数(技術表記法)に調整されます。 値0について指数表現が使用される場合、値0のスケールを維持するために小数点と1つまたは2つの小数部の桁が使用されます。 toString()の出力と違い、このメソッドの出力では、文字列コンストラクタを使用して出力文字列をBigDecimalに戻したときに、BigDecimalの同じ[integer, scale]ペアの復元は保証されないことに注意してください。 このメソッドの結果は、文字列コンストラクタをメソッドの出力に適用した結果と等価な数値を常に生成するという弱い制約を満たします。

      戻り値:
      指数が必要な場合、技術表記法による、このBigDecimalの文字列表現。
      導入されたバージョン:
      1.5
    • toPlainString

      public String toPlainString()
      指数フィールドなしで、このBigDecimalの文字列表現を返します。 正のスケールを持つ値の場合、小数点以下の桁数は、スケールを示すために使用されます。 スケールが0または負の値の場合、結果の文字列は、その値がスケール0を持つ数値的に等価な値に変換され、スケール0の値の末尾の0すべてが結果に存在するかのように生成されます。 スケールなしの値が0未満の場合、文字列全体の先頭にマイナス符号文字「-」(「\u002D」)が付けられます。 スケールなしの値が0または正の場合、符号文字は付けられません。 このメソッドの結果が文字列コンストラクタに渡される場合、このBigDecimalの数値だけが必ず復元されます。新しいBigDecimalの表現は異なるスケールを持つ可能性があります。 特に、このBigDecimalが負のスケールを持つ場合、このメソッドの結果の文字列は、文字列コンストラクタによって処理されるときにスケール0を持ちます。 (このメソッドの動作は、1.4以前のリリースでのtoStringメソッドと同様です。)
      戻り値:
      指数フィールドのない、このBigDecimalの文字列表現。
      導入されたバージョン:
      1.5
      関連項目:
      toString(), toEngineeringString()
    • toBigInteger

      public BigInteger toBigInteger()
      このBigDecimalBigIntegerに変換します。 この変換は、doubleからlongへのプリミティブ変換を狭めるに似ています。Java言語仕様で定義されています: このBigDecimalの小数部は破棄されます。 この変換により、BigDecimal値の精度に関する情報が失われる可能性があります。

      変換が正確でない(つまり、0以外の小数部が破棄される)場合に例外をスローするには、toBigIntegerExact()メソッドを使用してください。

      戻り値:
      BigIntegerに変換されたこのBigDecimal
      Java言語仕様を参照してください:
      5.1.3 プリミティブ・コンバージョンの解説
    • toBigIntegerExact

      public BigInteger toBigIntegerExact()
      このBigDecimalBigIntegerに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある場合、例外がスローされます。
      戻り値:
      BigIntegerに変換されたこのBigDecimal
      例外:
      ArithmeticException - thisが0以外の小数部を持つ場合。
      導入されたバージョン:
      1.5
    • longValue

      public long longValue()
      このBigDecimallongに変換します。 この変換は、doubleからshortへのプリミティブ変換を狭めるに似ています。Java言語仕様で定義されています: このBigDecimalの小数部は破棄され、結果の"BigInteger"が大きすぎてlongに収まらない場合は、下位64ビットのみが返されます。 この変換により、このBigDecimal値の絶対値と精度全体に関する情報が失われ、逆の符号で返される可能性があります。
      定義:
      longValue、クラス: Number
      戻り値:
      longに変換されたこのBigDecimal
      Java言語仕様を参照してください:
      5.1.3 プリミティブ・コンバージョンの解説
    • longValueExact

      public long longValueExact()
      このBigDecimallongに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはlongの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。
      戻り値:
      longに変換されたこのBigDecimal
      例外:
      ArithmeticException - thisが0以外の小数部を持つ、またはlong内に収まらない場合。
      導入されたバージョン:
      1.5
    • intValue

      public int intValue()
      このBigDecimalintに変換します。 この変換は、doubleからshortへのプリミティブ変換を狭めるに似ています。Java言語仕様で定義されています: このBigDecimalの小数部は破棄され、結果の"BigInteger"が大きすぎてintに収まらない場合は、下位32ビットのみが返されます。 この変換により、このBigDecimal値の絶対値と精度全体に関する情報が失われ、逆の符号で返される可能性があります。
      定義:
      intValue、クラス: Number
      戻り値:
      intに変換されたこのBigDecimal
      Java言語仕様を参照してください:
      5.1.3 プリミティブ・コンバージョンの解説
    • intValueExact

      public int intValueExact()
      このBigDecimalintに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはintの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。
      戻り値:
      intに変換されたこのBigDecimal
      例外:
      ArithmeticException - thisが0以外の小数部を持つ、またはint内に収まらない場合。
      導入されたバージョン:
      1.5
    • shortValueExact

      public short shortValueExact()
      このBigDecimalshortに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはshortの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。
      戻り値:
      shortに変換されたこのBigDecimal
      例外:
      ArithmeticException - thisが0以外の小数部を持つ、またはshort内に収まらない場合。
      導入されたバージョン:
      1.5
    • byteValueExact

      public byte byteValueExact()
      このBigDecimalbyteに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはbyteの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。
      戻り値:
      byteに変換されたこのBigDecimal
      例外:
      ArithmeticException - thisが0以外の小数部を持つ、またはbyte内に収まらない場合。
      導入されたバージョン:
      1.5
    • floatValue

      public float floatValue()
      このBigDecimalfloatに変換します。 この変換は、Java言語仕様で定義されているdoubleからfloatへのプリミティブ変換を狭めるに似ています: このBigDecimalが大きすぎてfloatとして表現できない場合は、必要に応じてFloat.NEGATIVE_INFINITYまたはFloat.POSITIVE_INFINITYに変換されます。 戻り値が有限である場合も、この変換により、BigDecimal値の精度に関する情報が失われる可能性があります。
      定義:
      floatValue、クラス: Number
      戻り値:
      floatに変換されたこのBigDecimal
      Java言語仕様を参照してください:
      5.1.3 プリミティブ・コンバージョンの解説
    • doubleValue

      public double doubleValue()
      このBigDecimaldoubleに変換します。 この変換は、Java言語仕様で定義されているdoubleからfloatへのプリミティブ変換を狭めるに似ています: このBigDecimaldoubleとして表す大きさが大きすぎる場合は、必要に応じてDouble.NEGATIVE_INFINITYまたはDouble.POSITIVE_INFINITYに変換されます。 戻り値が有限である場合も、この変換により、BigDecimal値の精度に関する情報が失われる可能性があります。
      定義:
      doubleValue、クラス: Number
      戻り値:
      doubleに変換されたこのBigDecimal
      Java言語仕様を参照してください:
      5.1.3 プリミティブ・コンバージョンの解説
    • ulp

      public BigDecimal ulp()
      このBigDecimalのulp (最終桁単位)のサイズを返します。 0以外のBigDecimal値のulpは、この値と、次に大きい絶対値および同じ桁数を持つBigDecimal値の間の正の距離です。 値0のulpは、スケールthisを持つ1と数値が等しくなります。 結果はthisと同じスケールで格納され、0および0以外の値の結果は[1, this.scale()]と等しくなります。
      戻り値:
      thisのulpのサイズ
      導入されたバージョン:
      1.5