クラス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メソッドでは、等価を保持するために数値と表現の両方が同じである必要があります。 scale()unscaledValue()などのメソッドの結果は、数値が異なる表現の場合に異なります。

一般に、端数処理モードと精度の設定によって、正確な結果に返される桁数よりも桁数が(分裂と平方根の場合にはおそらく無限に多く)の桁数が多い場合に、操作が限られた桁数で結果を返す方法が決まります。 まず、返される桁の合計数は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()
平方根ceil(radicand.scale()/2.0)
これらのスケールは、正確な算術結果を返すメソッドによってだけ使用されます。ただし、正確な除算では、正確な結果の桁数が多い可能性があるため、より大きなスケールを使用する必要がある場合があります。 たとえば、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に変換します。

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

    byteValue, shortValue
    修飾子と型
    メソッド
    説明
    byte
    指定された数値の値をbyteとして返します。
    short
    指定された数値の値をshortとして返します。

    クラスオブジェクトで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • フィールド詳細

    • 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.toString(double)を使用した結果からBigDecimalを構築した結果と等しいため、これは通常、doubleBigDecimalに変換する推奨方法です。

      float引数vはこのメソッドに渡すことができますが、多くの場合、結果にはfloatの精度よりも多くの後続桁が含まれます。 かわりにnew BigDecimal(Float.toString(v))を使用することを検討してください。

      パラメータ:
      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の平方根への近似を返します。

      返される結果の優先スケールはMath.ceilDiv(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