クラスBigDecimal

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

public class BigDecimal extends Number implements Comparable<BigDecimal>
変更が不可能な、任意精度の符号付き10進数です。 BigDecimalは、任意の精度整数スケールなしの値および32ビットの整数scaleで構成されます。 スケールがゼロまたは正の 合、スケールは小数点の右側の桁数です。 スケールが の 合、数値のスケール解除値に10を掛けてスケールを否定します。 したがって、BigDecimalで表される数値は(unscaledValue × 10-scale)です。

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

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

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

精度設定が0でない 合、 BigDecimalの算術ルールは、ANSI X3.274-1996およびANSI X3.274-1996/AM 1-2000 (セクション7.4)で定義されている、選択された演算モードと広範な互換性があります。 これらの標準とは異なり、BigDecimalには多くの端数処理モードが含まれます。 これらのANSI規 とBigDecimal仕様の競合は、BigDecimalを優先する方法で解決されます。

同じ数値でも表現が異なる(スケールが異なる)可能性があるため、算術および丸めのルールは、数値的な結果と、結果の表現に使用するスケールの両方を指定する必要があります。 同じ数値の異なる表現は、同じ「コーホート」のメンバーと呼ばれます。 BigDecimal「自然 序」では、同じコホートのメンバーが互いに等しいとみなされます。 一方、equalsメソッドでは、等価を保持するために数値と表現の両方が同じである必要があります。 scaleunscaledValue()などのメソッドの結果は、異なる表現を持つ数値で異なります。

一般に、端数処理モードと精度の設定によって、正確な結果に返される桁数よりも桁数が(分裂と平方 の 合にはおそらく無限に多く)の桁数が多い 合に、操作が限られた桁数で結果を返す方法が決まります。 まず、返される桁の合計数はMathContextprecision設定で指定されます。これにより、結果の精度が決定されます。 桁数のカウントは、正確な結果のもっとも左の0でない桁から始まります。 丸めモードでは、 棄される桁が返される結果にどのように影響するかが決定されます。

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

MathContextパラメータのあるメソッドおよびコンストラクタでは、結果が正確でなく、丸めモードがUNNECESSARYの 合、 ArithmeticExceptionがスローされます。

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

算術演算の結果で優先されるスケール
操作優先される結果のスケール
追 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を返します。

32ビット整数として、スケールの値セットは大きいが、制限されています。 結果のスケールがオーバーフローまたはアンダー・フローによって32ビット整数範囲を超える 合、その操作はArithmeticExceptionをスローする可能性があります。

説明をわかりやすく簡潔にするために、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自然 序付け「equalsと矛盾」であるため、BigDecimalオブジェクトがSortedMapのキーまたはSortedSetの要 として使用されている 合は注意が必要です。 詳細は、ComparableSortedMapまたはSortedSetを参照してく さい。

IEEE 754十進演算との関係

2008改訂以降、「浮動小数点演算用IEEE 754標準」には10進形式および操作が含まれています。 IEEE 754とこのクラスによって定義された10進数の演算に多くの類似性がありますが、重要な違いもあります。 BigDecimalとIEEE 754の10進数の算術で共有される基本的な類似性は、演算の無限に正確な実数値を計算し、その実数を「端数処理ポリシー」の表形式の浮動小数点値にマッピングする概念的演算です。 端数処理ポリシーは、BigDecimal「端数処理モード」と呼ばれ、IEEE 754-2019の丸め方向属性と呼ばれます。 正確な値が代用可能でない 合、端数処理ポリシーによって、正確な値が計算結果として選択される2つの代表可能な10進数値のうちどれかが決まります。 「優先スケール/優先指数」の概念も両方のシステ によって共有されます。

相違点については、IEEE 754には、 のゼロ、符号付き無限、およびNaN (not-a-number)など、BigDecimalによってモデル化されない複数の種類の値が含まれています。 IEEE 754は、ベース (2進または10進)、精度の桁数、指数範囲でパラメータ化されたフォーマットを定義します。 フォーマットは、代表可能な値のセットを決定します。 ほとんどの演算は、特定の書式の1つ以上の値を入力として受け入れ、同じ形式で結果を生成します。 BigDecimalscaleは、IEEE 754値の指数を無視することと同じです。 BigDecimal値の形式は同じ意味ではありません。すべての値のスケール/指数の範囲が同じであり、「スケールなしの値」の精度は任意です。 かわりに、MathContextパラメータを使用するBigDecimal操作の 合、MathContextにゼロ以外の精度がある 合、結果の表現可能な値のセットは、MathContext引数の精度によって決まります。 たとえば、BigDecimalでは、精度が3のMathContextオブジェクトのコンテキストで、0以外の3桁の数値と0以外の4桁数を乗算すると、結果は3桁の(オーバーフローやアンダー・フローなどがないと想定します。)になります。

「端数処理モード」で示されるBigDecimal操作によって実装される端数処理ポリシーは、IEEE 754端数処理方向属性の適切なスーパーセットです。

BigDecimal演算は、IEEE 754小数形式に対応するMathContext (decimal64decimal128など)がすべての開始値と中間演算の丸めに使用される 合、IEEE 754進数の演算に最も似ています。 MathContextBigDecimalの結果のスケールを制約しないために、近似しているIEEE 754形式の指数範囲を超えた 合、計算される数値は異なる可能性があります。 NaNまたは完全無限度を生成する操作(ゼロで除算するなど)は、BigDecimal算術でArithmeticExceptionをスローします。

アルゴリズ の複雑さ

BigDecimal値に対する操作には、アルゴリズ の複雑さの範囲があります。一般に、これらの複雑さは、スケーリングされていない値のサイズとスケールのサイズの両方の機能です。 たとえば、2つのBigDecimal値の「正確な乗算」は、スケーリングされていない値のBigInteger乗算と同じ「複雑性の制約」の対象となります。 一方、new BigDecimal(1E-1000000000)のようなコンパクトな表現を持つBigDecimal値には、10億文字を超えるtoPlainString()結果があります。

操作では、中間結果を割り当ててコンピュートすることもできます。これらの割当ては、アルゴリズ の実行時間に比例して大きくなる可能性があります。

実行時間または操作 域の境界に関係するBigDecimalのユーザーは、BigDecimal値をスケールなしの値でスクリーニングしたり、選択した大きさを超えるスケールをスクリーニングできます。

導入されたバージョン:
1.1
外部仕様
関連 目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final BigDecimal
    スケール0の値1です。
    static final int
    非推奨。
    代わりにRoundingMode.CEILINGを使用してく さい。
    static final int
    非推奨。
    代わりにRoundingMode.DOWNを使用してく さい。
    static final int
    非推奨。
    代わりにRoundingMode.FLOORを使用してく さい。
    static final int
    非推奨。
    代わりにRoundingMode.HALF_DOWNを使用してく さい。
    static final int
    非推奨。
    代わりにRoundingMode.HALF_EVENを使用してく さい。
    static final int
    非推奨。
    代わりにRoundingMode.HALF_UPを使用してく さい。
    static final int
    非推奨。
    代わりにRoundingMode.UNNECESSARYを使用してく さい。
    static final int
    非推奨。
    代わりにRoundingMode.UPを使用してく さい。
    static final BigDecimal
    スケール0の値10です。
    static final BigDecimal
    0のスケールを持つ値2。
    static final 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を返します。
    コンテキスト設定に従った丸めを使用して、値が(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
    このBigDecimalが指定された Objectと同じかどうか比較します。
    float
    このBigDecimalfloatに変換します。
    int
    このBigDecimalのハッシュ・コードを返します。
    int
    このBigDecimalintに変換します。
    int
    このBigDecimalintに変換し、失われた情 がないかどうかを確認します。
    long
    このBigDecimallongに変換します。
    long
    このBigDecimallongに変換し、失われた情 がないかどうかを確認します。
    このBigDecimalvalの最大値を返します。
    このBigDecimalvalの最小値を返します。
    小数点をn桁左へ移動してこれに等しいBigDecimalを返します。
    小数点を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精度を返します。
    値が(this % divisor)であるBigDecimalを返します。
    コンテキスト設定に従った丸めを使用して、値が(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
    • TWO

      public static final BigDecimal TWO
      0のスケールを持つ値2。
      導入されたバージョン:
      19
    • 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配列を文字列に変換し、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配列を文字列に変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。
      パラメータ:
      in - 文字のソースであるchar配列。
      offset - 調べる配列の最初の文字。
      len - 検討する文字数。
      mc - 使用するコンテキスト。
      スロー:
      NumberFormatException - inBigDecimalの有効な表現でない 合、または定義された部分配列が完全にin内にない 合。
      導入されたバージョン:
      1.5
    • BigDecimal

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

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

      public BigDecimal(String val)
      BigDecimalの文字列表現をBigDecimalに変換します。 文字列表現は、オプションの符号、'+' ( '\u002B')または'-' ('\u002D')のあとに、0個以上の10進数 ("整数")のシーケンス(オプションで、小数点、オプションでそのあとに指数が続く)で構成されます。

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

      指数は、文字'e' ('\u0065')または'E' ('\u0045')の後に10進数が続きます。

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

      BigDecimalString:
      Signopt Significand Exponentopt
      Sign:
      +
      -
      仮数:
      IntegerPart . FractionPartopt
      . FractionPart
      IntegerPart
      IntegerPart:
      Digits
      FractionPart:
      Digits
      Exponent:
      ExponentIndicator SignedInteger
      ExponentIndicator:
      e
      E
      SignedInteger:
      Signopt Digits
      Digits:
      数字
      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のノート:
      floatdouble 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 - 使用するコンテキスト。
      スロー:
      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 - 使用するコンテキスト。
      スロー:
      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 - 使用するコンテキスト。
      導入されたバージョン:
      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 - 使用するコンテキスト。
      導入されたバージョン:
      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 - 使用するコンテキスト。
      導入されたバージョン:
      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 - 使用するコンテキスト。
      導入されたバージョン:
      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
      導入されたバージョン:
      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
      導入されたバージョン:
      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
      導入されたバージョン:
      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が有効な丸めモードを表さない 合。
      関連 目:
    • 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が有効な丸めモードを表さない 合。
      関連 目:
    • 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 - 正確な商業に終了する10進数の拡張がない 合(0で除算することを含む)
      導入されたバージョン:
      1.5
    • divide

      public BigDecimal divide(BigDecimal divisor, MathContext mc)
      コンテキスト設定に従った丸めを使用して、値が(this /divisor)であるBigDecimalを返します。
      パラメータ:
      divisor - このBigDecimalを除算する値。
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis /divisor
      スロー:
      ArithmeticException - 結果が不正確でも端数処理モードがUNNECESSARYまたはmc.precision == 0で、商がゼロ除算を含めて終了していない10進数展開がある 合
      導入されたバージョン:
      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.divideToIntegralValue(divisor)の結果にはmc.precision桁を超える精度が必要です。
      導入されたバージョン:
      1.5
      関連 目:
    • divideAndRemainder

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

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

      パラメータ:
      divisor - このBigDecimalを除算する値、および計算された剰余。
      戻り値:
      2要 のBigDecimal配列。商(divideToIntegralValueの結果)が最初の要 で、剰余が最後の要 。
      スロー:
      ArithmeticException - divisor==0の 合
      導入されたバージョン:
      1.5
      関連 目:
    • 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.divideToIntegralValue(divisor)の結果にはmc.precision桁を超える精度が必要です。
      導入されたバージョン:
      1.5
      関連 目:
    • sqrt

      public BigDecimal sqrt(MathContext mc)
      コンテキスト設定に従って丸めを使用して、thisの平方 への近似を返します。

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

      特例として:

      • ZEROと数値的に等しい数値の平方 は、前述の一般ルールに従って優先スケールを持つZEROと数値的に等しくなります。 特に、ZEROの 合、ZERO.sqrt(mc).equals(ZERO)は任意のMathContextを引数としてtrueになります。

      パラメータ:
      mc - 使用するコンテキスト。
      戻り値:
      thisの平方 です。
      スロー:
      ArithmeticException - thisがゼロ未満の 合。
      ArithmeticException - 正確な結果が(mc.getPrecision()==0)にリクエストされ、正確な結果の有限小数の展開がない 合
      ArithmeticException - (mc.getRoundingMode()==RoundingMode.UNNECESSARY)と正確な結果がmc.getPrecision()桁に収まらない 合。
      導入されたバージョン:
      9
      関連 目:
    • 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標準の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)
      導入されたバージョン:
      1.5
    • negate

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

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

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

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

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

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

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

      パラメータ:
      mc - 使用するコンテキスト。
      戻り値:
      必要に応じて丸められたthis 0の結果のスケールは0
      導入されたバージョン:
      1.5
      関連 目:
    • 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
      導入されたバージョン:
      1.5
      関連 目:
    • setScale

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

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

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

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

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

      APIのノート:
      BigDecimalオブジェクトは不変であるため、このメソッドをコールしても、setXというメソッドを持つ通常の慣例とは異なり、元のオブジェクトは変更されません。フィールドXは変更されます。 代わりに、setScaleは適切なスケールを持つオブジェクトを返します。返されたオブジェクトは、新しく割り当てられる 合とそうでない 合があります。
      パラメータ:
      newScale - 返されるBigDecimalの値のスケール。
      戻り値:
      スケールが指定された値のBigDecimal。そのスケールなしの値は、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗との積または商により決定されます。
      スロー:
      ArithmeticException - 指定したスケール演算で丸めが必要な 合。
      関連 目:
    • 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
      スロー:
      ArithmeticException - スケールがオーバーフローする 合。
      導入されたバージョン:
      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>
      APIのノート:
      ノート: このクラスには等号と矛盾する自然な 序があります。 このメソッドの結果を0と比較する動作は、double値の「等比数列」を確認する 合に似ています。
      パラメータ:
      val - このBigDecimalと比較するBigDecimal
      戻り値:
      このBigDecimalの数値がvalより小さい 合は -1、等しい 合は0、大きい 合は1。
    • equals

      public boolean equals(Object x)
      このBigDecimalが指定された Objectと同じかどうか比較します。 compareToとは異なり、このメソッドでは、2つのBigDecimalオブジェクトが値とスケールに等しい 合にのみ考慮されます。 したがって、2.0は、このメソッドによる比較では2.0と等しくありません。これは、前者には[20, 1]に等しい[BigInteger, scale]コンポーネントがあり、後者には[200, 2]と等しいコンポーネントがあるためです。
      オーバーライド:
      equals、クラスObject
      APIのノート:
      算術演算によっては、2.0および2.0 0が相互に置換可能でないことを示す1つの例は、次の2つの式です:
      0.7と評価されるnew BigDecimal("2.0" ).divide(BigDecimal.valueOf(3), HALF_UP)
      0.67と評価されるnew BigDecimal("2.00").divide(BigDecimal.valueOf(3), HALF_UP)
      このメソッドの動作は、double値の「表現等価」の確認に似ています。
      パラメータ:
      x - このBigDecimalと比較するObject
      戻り値:
      指定されたObjectBigDecimalで、その値とスケールがこのBigDecimalと等しい 合に けtrue
      関連 目:
    • min

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

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

      public int hashCode()
      このBigDecimalのハッシュ・コードを返します。 ハッシュ・コードは、このBigDecimal「スケールなしの値」およびscaleの機能として計算されます。
      オーバーライド:
      hashCode、クラスObject
      APIのノート:
      数値的に等しいがスケール(例: 2.0および2.0 0)が異なる2つのBigDecimalオブジェクトは、通常、同じハッシュ・コードを持ちません。
      戻り値:
      このBigDecimalのハッシュ・コード。
      関連 目:
    • 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」、およびその直後の調整された指数を文字形式に変換したもので構成されます。 後者は、先 にゼロを付けずに'0'から'9'の文字を使用し、常に符号文字'-' ('\u002D')(調整済指数が の 合は 、それ以外の 合は'+' ('\u002B'))をプレフィクスとして付 されます。

      最後に、スケーリングされていない値がゼロより小さい 合、文字列全体の先 にマイナス記号文字'-' ('\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の文字列表現。
      関連 目:
    • 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すべてが結果に存在するかのように生成されます。 拡大縮小されていない値がゼロより小さい 合、文字列全体の先 にマイナス記号-('\u002D')が付けられます。 スケールなしの値が0または正の 合、符号文字は付けられません。 このメソッドの結果が文字列コンストラクタに渡される 合、このBigDecimalの数値 けが必ず復元されます。新しいBigDecimalの表現は異なるスケールを持つ可能性があります。 特に、このBigDecimalが のスケールを持つ 合、このメソッドの結果の文字列は、文字列コンストラクタによって処理されるときにスケール0を持ちます。 (このメソッドの動作は、1.4以前のリリースでのtoStringメソッドと同様です。)
      戻り値:
      指数フィールドのない、このBigDecimalの文字列表現。
      導入されたバージョン:
      1.5
      関連 目:
    • 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