- java.lang.Object
-
- java.lang.Number
-
- java.math.BigDecimal
-
- すべての実装されたインタフェース:
Serializable,Comparable<BigDecimal>
public class BigDecimal extends Number implements Comparable<BigDecimal>
変更が不可能な、任意精度の符号付き10進数です。BigDecimalは、任意精度のスケールなしの整数値と、32ビット整数のスケールで構成されます。 0または正の場合、スケールは小数点以下の桁数です。 負の場合、スケールなしの数値に、スケールの正負を逆にした値を指数とする10の累乗を乗算します。 つまり、BigDecimalで表される数値は(unscaledValue×10-scale)です。BigDecimalクラスは、算術、スケール操作、丸め、比較、ハッシング、および書式変換の演算を提供します。toString()メソッドはBigDecimalの正規表現を提供します。BigDecimalクラスは、ユーザーが丸め動作を完全に制御できるようにします。 丸めモードが指定されず、正確な結果が表現できない場合、例外がスローされます。そうでない場合、演算に適切なMathContextオブジェクトを指定することで、選択された精度と丸めモードで計算が実行されます。 どちらの場合も、丸めの制御に8つの丸めモードが提供されます。 このクラスの整数フィールドを使用して、丸めモードを表す(ROUND_HALF_UPなど)は非推奨です。代わりにRoundingModeenum、(RoundingMode.HALF_UPなど)の列挙値を使用する必要があります。MathContextオブジェクトに精度設定0 (たとえば、MathContext.UNLIMITED)が指定されている場合、その算術メソッドはMathContextオブジェクトを使用しないため、算術演算は正確です。 これは、リリース5より前でサポートされていた唯一の動作です。 結果の計算が正確であるため、精度0の設定を持つMathContextオブジェクトの丸めモード設定は使用されず、無関係です。 除算の場合、正確な商は小数点以下が無限の長さを持つ可能性があります(たとえば、 1÷3)。 商の小数点以下が無限で、演算が正確な結果を返すように指定されている場合、ArithmeticExceptionがスローされます。 そうでない場合、ほかの演算と同様に、除算の正確な結果が返されます。精度設定が0でない場合、
BigDecimalの算術ルールは、ANSI X3.274-1996およびANSI X3.274-1996/AM 1-2000 (セクション7.4)で定義されている、選択された演算モードと広範な互換性があります。 これらの規格とは異なり、BigDecimalには、リリース5より前のBigDecimalの除算で必須だった多くの丸めモードがあります。 これらのANSI規格とBigDecimal仕様の競合は、BigDecimalを優先する方法で解決されます。同じ数値でも表現が異なる(スケールが異なる)可能性があるため、算術および丸めのルールは、数値的な結果と、結果の表現に使用するスケールの両方を指定する必要があります。
通常、丸めモードと精度設定によって、正確な結果に返される桁数よりも多くの桁数(分裂と平方根の場合にはおそらく無限に多く)がある場合、桁数が制限された演算結果の返り方が決定されます。 まず、返される桁の合計数は
MathContextのprecision設定で指定されます。これにより、結果の精度が決定されます。 桁数のカウントは、正確な結果のもっとも左の0でない桁から始まります。 丸めモードでは、破棄される桁が返される結果にどのように影響するかが決定されます。すべての算術演算子では、演算は、まず正確な中間結果を計算し、次に(必要な場合は)選択された丸めモードを使用して精度設定で指定された桁数に丸めるという手順で実行されます。 正確な結果が返されない場合、正確な結果のいくつかの桁位置が破棄されます。 丸めにより、返される結果の絶対値が増える場合、先頭の「9」の桁に対して桁の繰上げを実行することで新しい桁位置を作成できます。 たとえば、999.9という値を切り上げて3桁に丸めると、1000と等しくなり、これは100×101として表現されます。 このような場合、新しい「1」が返される結果の先頭の桁位置になります。
論理的に正確な結果のほか、各算術演算には結果を表現するために優先されるスケールがあります。 各演算の優先スケールを、次の表に示します。
これらのスケールは、正確な算術結果を返すメソッドによってだけ使用されます。ただし、正確な除算では、正確な結果の桁数が多い可能性があるため、より大きなスケールを使用する必要がある場合があります。 たとえば、算術演算の結果で優先されるスケール 演算 優先される結果のスケール 加算 max(addend.scale(), augend.scale()) 減算 max(minuend.scale(), subtrahend.scale()) 乗算 multiplier.scale() + multiplicand.scale() 除算 dividend.scale() - divisor.scale() 平方根 radicand.scale()/2 1/32は0.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種類があります。 スケーリング/丸め演算(setScaleとround)は、値がオペランドの値とほぼ(または正確に)等しいがスケールまたは精度は指定された値であるBigDecimalを返します。このスケールまたは精度により、値に対して最小限の影響で、格納される数値の精度が上下します。 小数点移動演算(movePointLeftとmovePointRight)は、指定した方向に指定した桁だけ小数点を移動することによりオペランドから作成されるBigDecimalを返します。説明をわかりやすく簡潔にするために、
BigDecimalメソッドの説明では全体を通して擬似コードを使用します。 擬似コード式(i+j)は、「値がBigDecimaliの値とBigDecimaljの値の和であるBigDecimal」を示します。 擬似コード式(i == j)は、「BigDecimaliがBigDecimaljと同じ値を表す場合にだけtrueであること」を示します。 ほかの擬似コード式も同じように解釈されます。 角カッコは、BigDecimal値を定義する特別なBigIntegerとスケールのペアを表すために使用されます。たとえば、[19, 2]は、スケール2を持つ0.19と数値的に等しいBigDecimalです。このクラスのメソッドおよびコンストラクタはすべて、入力パラメータに対して
nullオブジェクト参照が渡されるとNullPointerExceptionをスローします。- APIのノート:
BigDecimalオブジェクトがSortedMapのキーとして、またはBigDecimal「自然順序付け」が「equalsと矛盾」なのでSortedSetの要素として使用される場合は注意が必要です。 詳細については、Comparable、SortedMapまたはSortedSetを参照してください。- 導入されたバージョン:
- 1.1
- 関連項目:
BigInteger,MathContext,RoundingMode,SortedMap,SortedSet, 直列化された形式
-
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static BigDecimalONEスケール0の値1です。static intROUND_CEILING非推奨。代わりにRoundingMode.CEILINGを使用してください。static intROUND_DOWN非推奨。代わりにRoundingMode.DOWNを使用してください。static intROUND_FLOOR非推奨。代わりにRoundingMode.FLOORを使用してください。static intROUND_HALF_DOWN非推奨。代わりにRoundingMode.HALF_DOWNを使用してください。static intROUND_HALF_EVEN非推奨。代わりにRoundingMode.HALF_EVENを使用してください。static intROUND_HALF_UP非推奨。代わりにRoundingMode.HALF_UPを使用してください。static intROUND_UNNECESSARY非推奨。代わりにRoundingMode.UNNECESSARYを使用してください。static intROUND_UP非推奨。代わりにRoundingMode.UPを使用してください。static BigDecimalTENスケール0の値10です。static BigDecimalZEROスケール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)doubleをdoubleのバイナリ浮動小数点値の正確な10進数表現であるBigDecimalに変換します。BigDecimal(double val, MathContext mc)コンテキスト設定に従った丸めを使用して、doubleをBigDecimalに変換します。BigDecimal(int val)intをBigDecimalに変換します。BigDecimal(int val, MathContext mc)コンテキスト設定に従った丸めを使用して、intをBigDecimalに変換します。BigDecimal(long val)longをBigDecimalに変換します。BigDecimal(long val, MathContext mc)コンテキスト設定に従った丸めを使用して、longをBigDecimalに変換します。BigDecimal(String val)BigDecimalの文字列表現をBigDecimalに変換します。BigDecimal(String val, MathContext mc)BigDecimalの文字列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字列をBigDecimal(String)コンストラクタとして受け取ります。BigDecimal(BigInteger val)BigIntegerをBigDecimalに変換します。BigDecimal(BigInteger unscaledVal, int scale)BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)コンテキスト設定に従った丸めを使用して、BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。BigDecimal(BigInteger val, MathContext mc)コンテキスト設定に従った丸めを使用して、BigIntegerをBigDecimalに変換します。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 BigDecimalabs()値がこのBigDecimalの絶対値でスケールがthis.scale()であるBigDecimalを返します。BigDecimalabs(MathContext mc)コンテキスト設定に従った丸めを使用して、値がこのBigDecimalの絶対値であるBigDecimalを返します。BigDecimaladd(BigDecimal augend)値が(this+augend)でスケールがmax(this.scale(), augend.scale())であるBigDecimalを返します。BigDecimaladd(BigDecimal augend, MathContext mc)コンテキスト設定に従った丸めを使用して、値が(this+augend)であるBigDecimalを返します。bytebyteValueExact()このBigDecimalをbyteに変換し、失われた情報がないかどうかを確認します。intcompareTo(BigDecimal val)このBigDecimalを指定されたBigDecimalと比較します。BigDecimaldivide(BigDecimal divisor)値が(this /divisor)で優先スケールが(this.scale() - divisor.scale())であるBigDecimalを返します。(小数点以下が無限となるため)正確な商を表現できない場合、ArithmeticExceptionがスローされます。BigDecimaldivide(BigDecimal divisor, int roundingMode)非推奨。このdivide(BigDecimal, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。BigDecimaldivide(BigDecimal divisor, int scale, int roundingMode)非推奨。このdivide(BigDecimal, int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。BigDecimaldivide(BigDecimal divisor, int scale, RoundingMode roundingMode)値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。BigDecimaldivide(BigDecimal divisor, MathContext mc)コンテキスト設定に従った丸めを使用して、値が(this /divisor)であるBigDecimalを返します。BigDecimaldivide(BigDecimal divisor, RoundingMode roundingMode)値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。BigDecimal[]divideAndRemainder(BigDecimal divisor)divideToIntegralValueの結果とそれに続く2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。BigDecimal[]divideAndRemainder(BigDecimal divisor, MathContext mc)コンテキスト設定に従った丸めを使用して計算されたdivideToIntegralValueの結果と、2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。BigDecimaldivideToIntegralValue(BigDecimal divisor)値が丸められた商(this /divisor)の整数部であるBigDecimalを返します。BigDecimaldivideToIntegralValue(BigDecimal divisor, MathContext mc)値が(this /divisor)の整数部であるBigDecimalを返します。doubledoubleValue()このBigDecimalをdoubleに変換します。booleanequals(Object x)このBigDecimalが指定されたObjectと同じかどうか比較します。floatfloatValue()このBigDecimalをfloatに変換します。inthashCode()このBigDecimalのハッシュ・コードを返します。intintValue()このBigDecimalをintに変換します。intintValueExact()このBigDecimalをintに変換し、失われた情報がないかどうかを確認します。longlongValue()このBigDecimalをlongに変換します。longlongValueExact()このBigDecimalをlongに変換し、失われた情報がないかどうかを確認します。BigDecimalmax(BigDecimal val)このBigDecimalとvalの最大値を返します。BigDecimalmin(BigDecimal val)このBigDecimalとvalの最小値を返します。BigDecimalmovePointLeft(int n)小数点をn桁左へ移動してこれに等しいBigDecimalを返します。BigDecimalmovePointRight(int n)小数点をn桁右へ移動してこれに等しいBigDecimalを返します。BigDecimalmultiply(BigDecimal multiplicand)値が(this×multiplicand)でスケールが(this.scale()+multiplicand.scale())であるBigDecimalを返します。BigDecimalmultiply(BigDecimal multiplicand, MathContext mc)コンテキスト設定に従った丸めを使用して、値が(this×multiplicand)であるBigDecimalを返します。BigDecimalnegate()値が(-this)でスケールがthis.scale()であるBigDecimalを返します。BigDecimalnegate(MathContext mc)コンテキスト設定に従った丸めを使用して、値が(-this)であるBigDecimalを返します。BigDecimalplus()値が(+this)でスケールがthis.scale()であるBigDecimalを返します。BigDecimalplus(MathContext mc)コンテキスト設定に従った丸めを使用して、値が(+this)であるBigDecimalを返します。BigDecimalpow(int n)値が(thisn)であるBigDecimalを返します。累乗は、精度の制限なしで正確に計算されます。BigDecimalpow(int n, MathContext mc)値が(thisn)であるBigDecimalを返します。intprecision()このBigDecimalの精度を返します。BigDecimalremainder(BigDecimal divisor)値が(this % divisor)であるBigDecimalを返します。BigDecimalremainder(BigDecimal divisor, MathContext mc)コンテキスト設定に従った丸めを使用して、値が(this % divisor)であるBigDecimalを返します。BigDecimalround(MathContext mc)MathContext設定に従って丸められたBigDecimalを返します。intscale()このBigDecimalのスケールを返します。BigDecimalscaleByPowerOfTen(int n)数値が(this* 10n)に等しいBigDecimalを返します。BigDecimalsetScale(int newScale)スケールが指定された値であり、値がこのBigDecimalと同じ数値であるBigDecimalを返します。BigDecimalsetScale(int newScale, int roundingMode)非推奨。このsetScale(int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。BigDecimalsetScale(int newScale, RoundingMode roundingMode)スケールが指定された値であり、かつスケールなしの値が、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗の積または商により決定されるBigDecimalを返します。shortshortValueExact()このBigDecimalをshortに変換し、失われた情報がないかどうかを確認します。intsignum()このBigDecimalの符号要素を返します。BigDecimalsqrt(MathContext mc)コンテキスト設定に従って四捨五入して、thisの平方根に対する近似値を返します。BigDecimalstripTrailingZeros()数値はこれに等しいが、末尾の0が表現から削除されたBigDecimalを返します。BigDecimalsubtract(BigDecimal subtrahend)値が(this - subtrahend)でスケールがmax(this.scale(), subtrahend.scale())であるBigDecimalを返します。BigDecimalsubtract(BigDecimal subtrahend, MathContext mc)コンテキスト設定に従った丸めを使用して、値が(this - subtrahend)であるBigDecimalを返します。BigIntegertoBigInteger()このBigDecimalをBigIntegerに変換します。BigIntegertoBigIntegerExact()このBigDecimalをBigIntegerに変換し、失われた情報がないかどうかを確認します。StringtoEngineeringString()指数が必要な場合、技術表記法で、このBigDecimalの文字列表現を返します。StringtoPlainString()指数フィールドなしで、このBigDecimalの文字列表現を返します。StringtoString()指数が必要な場合、科学表記法で、このBigDecimalの文字列表現を返します。BigDecimalulp()このBigDecimalのulp (最終桁単位)のサイズを返します。BigIntegerunscaledValue()値がこのBigDecimalのスケールなしの値であるBigIntegerを返します。static BigDecimalvalueOf(double val)Double.toString(double)メソッドで提供されるdoubleの正規の文字列表現を使用して、doubleをBigDecimalに変換します。static BigDecimalvalueOf(long val)long値をスケールが0のBigDecimalに変換します。static BigDecimalvalueOf(long unscaledVal, int scale)longのスケールなしの値とintのスケールをBigDecimalに変換します。-
クラス java.lang.Numberで宣言されたメソッド
byteValue, shortValue
-
-
-
-
フィールドの詳細
-
ZERO
public static final BigDecimal ZERO
スケール0の値0です。- 導入されたバージョン:
- 1.5
-
ONE
public static final BigDecimal ONE
スケール0の値1です。- 導入されたバージョン:
- 1.5
-
TEN
public static final BigDecimal TEN
スケール0の値10です。- 導入されたバージョン:
- 1.5
-
ROUND_UP
@Deprecated(since="9") public static final int ROUND_UP
非推奨。代わりにRoundingMode.UPを使用してください。0から離れるように丸めるモードです。 破棄される0以外の小数部に先行する桁を常に増分します。 この丸めモードは、計算された値の絶対値を減らしません。- 関連項目:
- 定数フィールド値
-
ROUND_DOWN
@Deprecated(since="9") public static final int ROUND_DOWN
非推奨。代わりにRoundingMode.DOWNを使用してください。0に近づくように丸めるモードです。 破棄される小数部に先行する桁を増分しません(つまり切り捨て)。 この丸めモードは、計算された値の絶対値を増やしません。- 関連項目:
- 定数フィールド値
-
ROUND_CEILING
@Deprecated(since="9") public static final int ROUND_CEILING
非推奨。代わりにRoundingMode.CEILINGを使用してください。正の無限大に近づくように丸めるモードです。BigDecimalが正の場合はROUND_UPのように動作し、負の場合はROUND_DOWNのように動作します。 この丸めモードは、計算された値を減らしません。- 関連項目:
- 定数フィールド値
-
ROUND_FLOOR
@Deprecated(since="9") public static final int ROUND_FLOOR
非推奨。代わりにRoundingMode.FLOORを使用してください。負の無限大に近づくように丸めるモードです。BigDecimalが正の場合はROUND_DOWNのように動作し、負の場合はROUND_UPのように動作します。 この丸めモードは、計算された値を増やしません。- 関連項目:
- 定数フィールド値
-
ROUND_HALF_UP
@Deprecated(since="9") public static final int ROUND_HALF_UP
非推奨。代わりにRoundingMode.HALF_UPを使用してください。「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は切り上げます)。 破棄される小数部が0.5以上の場合はROUND_UPのように、それ以外の場合はROUND_DOWNのように動作します。 これは我々の大半が小学校で習った丸めモードのことです。- 関連項目:
- 定数フィールド値
-
ROUND_HALF_DOWN
@Deprecated(since="9") public static final int ROUND_HALF_DOWN
非推奨。代わりにRoundingMode.HALF_DOWNを使用してください。「もっとも近い数字」に丸める丸めモードです(両隣りの数字が等距離の場合は切り捨てます)。 破棄される小数部が0.5を超える場合はROUND_UPのように、それ以外の場合はROUND_DOWNのように動作します。- 関連項目:
- 定数フィールド値
-
ROUND_HALF_EVEN
@Deprecated(since="9") public static final int ROUND_HALF_EVEN
非推奨。代わりにRoundingMode.HALF_EVENを使用してください。「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は偶数側に丸めます)。 破棄する小数部の左側の桁が奇数の場合はROUND_HALF_UPのように、偶数の場合はROUND_HALF_DOWNのように動作します。 この丸めモードは、連続する計算で繰返し適用される場合に累積エラーを最小限にします。- 関連項目:
- 定数フィールド値
-
ROUND_UNNECESSARY
@Deprecated(since="9") public static final int ROUND_UNNECESSARY
非推奨。代わりにRoundingMode.UNNECESSARYを使用してください。要求される演算の結果が正確であり、丸めが必要でないことを表す丸めモードです。 この丸めモードが結果が正確でない演算で指定される場合は、ArithmeticExceptionがスローされます。- 関連項目:
- 定数フィールド値
-
-
コンストラクタの詳細
-
BigDecimal
public BigDecimal(char[] in, int offset, int len)BigDecimalの文字配列表現をBigDecimalに変換し、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取り、部分配列の指定を可能にします。- 実装上のノート:
- 文字配列が文字配列内ですでに使用可能な場合、このコンストラクタを使用する方が
char配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。 - パラメータ:
in- 文字のソースであるchar配列。offset- 調べる配列の最初の文字。len- 検討する文字数。- 例外:
NumberFormatException-inがBigDecimalの有効な表現でない場合、または定義された部分配列が完全にin内にない場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(char[] in, int offset, int len, MathContext mc)部分配列の指定を可能にし、コンテキスト設定に従った丸めを使用しつつ、BigDecimalの文字配列表現をBigDecimalに変換して、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。- 実装上のノート:
- 文字配列が文字配列内ですでに使用可能な場合、このコンストラクタを使用する方が
char配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。 - パラメータ:
in- 文字のソースであるchar配列。offset- 調べる配列の最初の文字。len- 検討する文字数。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。NumberFormatException-inがBigDecimalの有効な表現でない場合、または定義された部分配列が完全にin内にない場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(char[] in)
BigDecimalの文字配列表現をBigDecimalに変換し、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。- 実装上のノート:
- 文字配列がすでに文字配列として使用可能な場合、このコンストラクタを使用する方が
char配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。 - パラメータ:
in- 文字のソースであるchar配列。- 例外:
NumberFormatException-inがBigDecimalの有効な表現でない場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(char[] in, MathContext mc)BigDecimalの文字配列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。- 実装上のノート:
- 文字配列がすでに文字配列として使用可能な場合、このコンストラクタを使用する方が
char配列をstringに変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。 - パラメータ:
in- 文字のソースであるchar配列。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。NumberFormatException-inがBigDecimalの有効な表現でない場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(String val)
BigDecimalの文字列表現をBigDecimalに変換します。 文字列表現は、任意の符号「+」(「\u002B」)または「-」(「\u002D」)と、それに続く0桁以上の10進数字(「整数部」)の列で構成され、任意で小数部または指数が付随します。小数部は、小数点と0桁以上の10進数字で構成されます。 この文字列では、整数部または小数部が少なくとも1桁は必要です。 符号、整数部、分数部からなる数字は有効数字と呼ばれます。
指数は、「
e」(「\u0065」)または「E」(「\u0045」)という文字に、1つ以上の10進数字が続くかたちで構成されます。 指数値は -Integer.MAX_VALUE(Integer.MIN_VALUE+1)からInteger.MAX_VALUEの範囲の値である必要があります。つまり、このコンストラクタが受け入れる文字列は次の文法によって記述されます。
- BigDecimalString:
- Signopt Significand Exponentopt
- Sign:
+-- Significand:
- IntegerPart
FractionPartopt.FractionPart- IntegerPart
- IntegerPart:
- Digits
- FractionPart:
- Digits
- Exponent:
- ExponentIndicator SignedInteger
- ExponentIndicator:
eE- SignedInteger:
- Signopt Digits
- Digits:
- Digit
- Digits Digit
- Digit:
Character.isDigit(char)がtrueを返す任意の文字(0、1、2など)
返される
BigDecimalのスケールは、小数部の桁数または0 (文字列に小数部がない場合)となり、指数を調整します。文字列に指数がある場合、スケールから指数が減算されます。 結果のスケール値は、Integer.MIN_VALUEからInteger.MAX_VALUEの範囲の値である必要があります。文字から数字へのマッピングは
Character.digit(char, int)で提供され、基数10への変換に設定されます。 Stringには、不適切な文字(空白など)を含めることはできません。例:
返されるBigDecimalの値は、significand×10 exponentと等しくなります。 左側に各文字列、右側に結果の表現[BigInteger,scale]が示されます。"0" [0,0] "0.00" [0,2] "123" [123,0] "-123" [-123,0] "1.23E3" [123,-1] "1.23E+3" [123,-1] "12.3E+7" [123,-6] "12.0" [120,1] "12.3" [123,1] "0.00123" [123,5] "-1.23E-12" [-123,14] "1234.5E-4" [12345,5] "0E+7" [0,-7] "-0" [0,0]
- APIのノート:
floatおよびdoubleNaNおよび±Infinity以外の値の場合、このコンストラクタはFloat.toString(float)およびDouble.toString(double)から返される値と互換性があります。 この方法では、BigDecimal(double)コンストラクタで予測ができないことによる影響を受けないため、通常はfloatまたはdoubleをBigDecimalに変換する望ましい方法です。- パラメータ:
val-BigDecimalの文字列表現。- 例外:
NumberFormatException-valがBigDecimalの有効な表現でない場合。
-
BigDecimal
public BigDecimal(String val, MathContext mc)
BigDecimalの文字列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字列をBigDecimal(String)コンストラクタとして受け取ります。- パラメータ:
val-BigDecimalの文字列表現。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。NumberFormatException-valがBigDecimalの有効な表現でない場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(double val)
doubleをdoubleのバイナリ浮動小数点値の正確な10進数表現であるBigDecimalに変換します。 返されたBigDecimalのスケールは、(10scale×val)が整数となるような最小値です。ノート:
-
このコンストラクタの結果は予想外である可能性があります。 Javaで
new BigDecimal(0.1)と記述すると、0.1と正確に等しいBigDecimal(スケール1の、スケールなしの値1)が作成されると考えるかもしれませんが、実際には0.1000000000000000055511151231257827021181583404541015625と等しくなります。 これは、0.1をdoubleとして(または有限長2進小数として)正確に表現できないためです。 したがって、コンストラクタに渡される値は正確に0.1と等しいわけではありません。 -
一方、
Stringコンストラクタは完全に予測可能です。new BigDecimal("0.1")と記述すると、予期したとおり正確に 0.1と等しいBigDecimalが作成されます。 そのため、通常は、これよりもStringコンストラクタを優先して使用することをお薦めします。 -
BigDecimalのソースとしてdoubleを使用する必要がある場合、このコンストラクタは正確な変換を行うことに注意してください。このコンストラクタでは、Double.toString(double)メソッドとBigDecimal(String)コンストラクタを使用してdoubleをStringに変換したときと同じ結果にはなりません。 そのような結果を得るには、staticvalueOf(double)メソッドを使用します。
- パラメータ:
val-BigDecimalに変換するdouble値。- 例外:
NumberFormatException-valが無限かNaNである場合。
-
このコンストラクタの結果は予想外である可能性があります。 Javaで
-
BigDecimal
public BigDecimal(double val, MathContext mc)コンテキスト設定に従った丸めを使用して、doubleをBigDecimalに変換します。BigDecimalのスケールは、(10scale×val)が整数であるような最小値です。このコンストラクタの結果は予想外である可能性があるため、一般的に使用はお薦めしません。
BigDecimal(double)コンストラクタのノートを参照してください。- パラメータ:
val-BigDecimalに変換するdouble値。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、RoundingModeがUNNECESSARYの場合。NumberFormatException-valが無限かNaNである場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(BigInteger val)
BigIntegerをBigDecimalに変換します。BigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するBigInteger値。
-
BigDecimal
public BigDecimal(BigInteger val, MathContext mc)
コンテキスト設定に従った丸めを使用して、BigIntegerをBigDecimalに変換します。BigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するBigInteger値。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(BigInteger unscaledVal, int scale)
BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。BigDecimalの値は(unscaledVal×10-scale)です。- パラメータ:
unscaledVal-BigDecimalのスケールなしの値。scale-BigDecimalのスケール。
-
BigDecimal
public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
コンテキスト設定に従った丸めを使用して、BigIntegerのスケールなしの値とintのスケールをBigDecimalに変換します。BigDecimalの値は(unscaledVal×10-scale)であり、precisionと丸めモード設定に従って丸められます。- パラメータ:
unscaledVal-BigDecimalのスケールなしの値。scale-BigDecimalのスケール。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(int val)
intをBigDecimalに変換します。BigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するint値。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(int val, MathContext mc)コンテキスト設定に従った丸めを使用して、intをBigDecimalに変換します。 丸めを行う前のBigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するint値。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(long val)
longをBigDecimalに変換します。BigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するlong値。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(long val, MathContext mc)コンテキスト設定に従った丸めを使用して、longをBigDecimalに変換します。 丸めを行う前のBigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するlong値。mc- 使用するコンテキスト。- 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
-
メソッドの詳細
-
valueOf
public static BigDecimal valueOf(long unscaledVal, int scale)
longのスケールなしの値とintのスケールをBigDecimalに変換します。- APIのノート:
- この静的ファクトリ・メソッドは、頻繁に使用される
BigDecimal値の再利用が可能なため、(long,int)コンストラクタよりも優先されて提供されます。 - パラメータ:
unscaledVal-BigDecimalのスケールなしの値。scale-BigDecimalのスケール。- 戻り値:
- 値が
(unscaledVal×10-scale)のBigDecimal。
-
valueOf
public static BigDecimal valueOf(long val)
long値をスケールが0のBigDecimalに変換します。- APIのノート:
- この静的ファクトリ・メソッドは、頻繁に使用される
BigDecimal値の再利用が可能なため、(long)コンストラクタよりも優先されて提供されます。 - パラメータ:
val-BigDecimalの値。- 戻り値:
- 値が
valであるBigDecimal。
-
valueOf
public static BigDecimal valueOf(double val)
Double.toString(double)メソッドで提供されるdoubleの正規の文字列表現を使用して、doubleをBigDecimalに変換します。- APIのノート:
double(またはfloat)をBigDecimalに変換するには、BigDecimalをDouble.toString(double)を使用した結果から構築された結果と同じ値にするのが優先される方法です。- パラメータ:
val-BigDecimalに変換するdouble。- 戻り値:
- 値が
valと等しい、またはほぼ等しいBigDecimal。 - 例外:
NumberFormatException-valが無限かNaNである場合。- 導入されたバージョン:
- 1.5
-
add
public BigDecimal add(BigDecimal augend)
値が(this+augend)でスケールがmax(this.scale(), augend.scale())であるBigDecimalを返します。- パラメータ:
augend- このBigDecimalに加算する値。- 戻り値:
this + augend
-
add
public BigDecimal add(BigDecimal augend, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this+augend)であるBigDecimalを返します。 どちらかの数値が0で精度設定が0以外である場合、必要に応じて丸められたほかの数値が結果として使用されます。- パラメータ:
augend- このBigDecimalに加算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this+augend。 - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
subtract
public BigDecimal subtract(BigDecimal subtrahend)
値が(this - subtrahend)でスケールがmax(this.scale(), subtrahend.scale())であるBigDecimalを返します。- パラメータ:
subtrahend- このBigDecimalから減算する値。- 戻り値:
this - subtrahend
-
subtract
public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this - subtrahend)であるBigDecimalを返します。subtrahendが0である場合、必要に応じて丸められたthisの値が結果として使用されます。 thisが0である場合、結果はsubtrahend.negate(mc)です。- パラメータ:
subtrahend- このBigDecimalから減算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this - subtrahend。 - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
multiply
public BigDecimal multiply(BigDecimal multiplicand)
値が(this×multiplicand)でスケールが(this.scale()+multiplicand.scale())であるBigDecimalを返します。- パラメータ:
multiplicand- このBigDecimalで乗算する値。- 戻り値:
this * multiplicand
-
multiply
public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this×multiplicand)であるBigDecimalを返します。- パラメータ:
multiplicand- このBigDecimalで乗算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this * multiplicand。 - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
divide
@Deprecated(since="9") public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
非推奨。このdivide(BigDecimal, int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。 丸めを行い、指定したスケールで結果を生成する必要がある場合は、指定した丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。scale- 返されるBigDecimalの商のスケール。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- 例外:
ArithmeticException-divisorが0で、roundingMode==ROUND_UNNECESSARYであり、指定したスケールが除算の結果を正確に表すには十分でない場合。IllegalArgumentException-roundingModeが有効な丸めモードを表さない場合。- 関連項目:
ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UNNECESSARY
-
divide
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。 丸めを行い、指定したスケールで結果を生成する必要がある場合は、指定した丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。scale- 返されるBigDecimalの商のスケール。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- 例外:
ArithmeticException-divisorが0で、roundingMode==RoundingMode.UNNECESSARYであり、指定したスケールが除算の結果を正確に表すには十分でない場合。- 導入されたバージョン:
- 1.5
-
divide
@Deprecated(since="9") public BigDecimal divide(BigDecimal divisor, int roundingMode)
非推奨。このdivide(BigDecimal, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。 丸めを行い、特定のスケールで結果を生成する必要がある場合は、指定された丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- 例外:
ArithmeticException-divisor==0である場合、またはroundingMode==ROUND_UNNECESSARYであり、this.scale()が除算の結果を正確に表すには十分でない場合。IllegalArgumentException-roundingModeが有効な丸めモードを表さない場合。- 関連項目:
ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UNNECESSARY
-
divide
public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。 丸めを行い、特定のスケールで結果を生成する必要がある場合は、指定された丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- 例外:
ArithmeticException-divisor==0である場合、またはroundingMode==RoundingMode.UNNECESSARYであり、this.scale()が除算の結果を正確に表すには十分でない場合。- 導入されたバージョン:
- 1.5
-
divide
public BigDecimal divide(BigDecimal divisor)
値が(this /divisor)で優先スケールが(this.scale() - divisor.scale())であるBigDecimalを返します。(小数点以下が無限となるため)正確な商を表現できない場合、ArithmeticExceptionがスローされます。- パラメータ:
divisor- このBigDecimalを除算する値。- 戻り値:
this / divisor- 例外:
ArithmeticException- 正確な商の小数点以下が無限である場合- 導入されたバージョン:
- 1.5
-
divide
public BigDecimal divide(BigDecimal divisor, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this /divisor)であるBigDecimalを返します。- パラメータ:
divisor- このBigDecimalを除算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this /divisor。 - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYまたはmc.precision == 0で、かつ商の小数点以下が無限である場合。- 導入されたバージョン:
- 1.5
-
divideToIntegralValue
public BigDecimal divideToIntegralValue(BigDecimal divisor)
値が丸められた商(this /divisor)の整数部であるBigDecimalを返します。 結果の優先スケールは(this.scale() - divisor.scale())です。- パラメータ:
divisor- このBigDecimalを除算する値。- 戻り値:
this /divisorの整数部。- 例外:
ArithmeticException-divisor==0の場合- 導入されたバージョン:
- 1.5
-
divideToIntegralValue
public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
値が(this /divisor)の整数部であるBigDecimalを返します。 正確な商の整数部は丸めモードに依存しないため、丸めモードはこのメソッドにより返される値に影響を及ぼしません。 結果の優先スケールは(this.scale() - divisor.scale())です。 正確な商の整数部にmc.precisionよりも多くの桁が必要な場合、ArithmeticExceptionがスローされます。- パラメータ:
divisor- このBigDecimalを除算する値。mc- 使用するコンテキスト。- 戻り値:
this /divisorの整数部。- 例外:
ArithmeticException-divisor==0の場合ArithmeticException-mc.precisionが0より大きく、結果にmc.precisionよりも桁数の多い精度が必要な場合。- 導入されたバージョン:
- 1.5
-
remainder
public BigDecimal remainder(BigDecimal divisor)
値が(this % divisor)であるBigDecimalを返します。剰余は、
this.subtract(this.divideToIntegralValue(divisor).multiply(divisor))で得られます。 これはモジュロ演算(結果は否定的な可能性があります)ではないことに注意してください。- パラメータ:
divisor- このBigDecimalを除算する値。- 戻り値:
this % divisor。- 例外:
ArithmeticException-divisor==0の場合- 導入されたバージョン:
- 1.5
-
remainder
public BigDecimal remainder(BigDecimal divisor, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this % divisor)であるBigDecimalを返します。MathContext設定は、剰余の計算に使用する暗黙的な除算に影響を及ぼします。 定義の示すとおり、剰余の計算自体は正確です。 そのため、剰余はmc.getPrecision()よりも多くの桁を含む可能性があります。剰余は、
this.subtract(this.divideToIntegralValue(divisor, mc).multiply(divisor))で得られます。 これはモジュロ演算ではない(負の結果が可能)であることに留意してください。- パラメータ:
divisor- このBigDecimalを除算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this % divisor。 - 例外:
ArithmeticException-divisor==0の場合ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合、またはmc.precisionが0より大きく、this.divideToIntgralValue(divisor)の結果にmc.precisionよりも桁数の多い精度が必要な場合。- 導入されたバージョン:
- 1.5
- 関連項目:
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
-
divideAndRemainder
public BigDecimal[] divideAndRemainder(BigDecimal divisor)
divideToIntegralValueの結果とそれに続く2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。整数の商と剰余の両方が必要な場合、
divideToIntegralValueメソッドとremainderメソッドを別々に使用するより、除算を1回だけ実行すればよいこのメソッドの方が高速であることに留意してください。- パラメータ:
divisor- このBigDecimalを除算する値、および計算された剰余。- 戻り値:
- 2要素の
BigDecimal配列。商(divideToIntegralValueの結果)が最初の要素で、剰余が最後の要素。 - 例外:
ArithmeticException-divisor==0の場合- 導入されたバージョン:
- 1.5
- 関連項目:
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext),remainder(java.math.BigDecimal, java.math.MathContext)
-
divideAndRemainder
public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
コンテキスト設定に従った丸めを使用して計算されたdivideToIntegralValueの結果と、2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。整数の商と剰余の両方が必要な場合、
divideToIntegralValueメソッドとremainderメソッドを別々に使用するより、除算を1回だけ実行すればよいこのメソッドの方が高速であることに留意してください。- パラメータ:
divisor- このBigDecimalを除算する値、および計算された剰余。mc- 使用するコンテキスト。- 戻り値:
- 2要素の
BigDecimal配列。商(divideToIntegralValueの結果)が最初の要素で、剰余が最後の要素。 - 例外:
ArithmeticException-divisor==0の場合ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合、またはmc.precisionが0より大きく、this.divideToIntgralValue(divisor)の結果にmc.precisionよりも桁数の多い精度が必要な場合。- 導入されたバージョン:
- 1.5
- 関連項目:
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext),remainder(java.math.BigDecimal, java.math.MathContext)
-
sqrt
public BigDecimal sqrt(MathContext mc)
コンテキスト設定に従って四捨五入して、thisの平方根に対する近似値を返します。返される結果の優先スケールは
this.scale()/2に等しい。 返される結果の値は、問題の精度の正確な10進値の1 ulp内に常にあります。 丸めモードがHALF_UP、HALF_DOWN、またはHALF_EVENの場合、結果は正確な10進値の半分のulpになります。特例として:
-
ZEROに数値的に等しい数値の平方根は、数値的には上記の一般規則に従った優先縮尺のZEROに等しい。 特に、ZEROの場合、ZERO.sqrt(mc).equals(ZERO)は任意のMathContextを引数としてtrueとなります。
- パラメータ:
mc- 使用するコンテキスト。- 戻り値:
thisの平方根です。- 例外:
ArithmeticException-thisが0より小さい場合。ArithmeticException- 正確な結果が(mc.getPrecision()==0)にリクエストされ、正確な結果の有限小数の展開がない場合ArithmeticException-(mc.getRoundingMode()==RoundingMode.UNNECESSARY)と正確な結果がmc.getPrecision()数字に収まらない場合。- 導入されたバージョン:
- 9
- 関連項目:
BigInteger.sqrt()
-
-
pow
public BigDecimal pow(int n)
値が(thisn)であるBigDecimalを返します。累乗は、精度の制限なしで正確に計算されます。パラメータ
nは、0から999999999の範囲に収まっている必要があります。ZERO.pow(0)はONEを返します。 将来のリリースでは、このメソッドの指数の許容範囲が拡張される可能性があります。- パラメータ:
n- このBigDecimalの累乗。- 戻り値:
thisn- 例外:
ArithmeticException-nが範囲外の場合。- 導入されたバージョン:
- 1.5
-
pow
public BigDecimal pow(int n, MathContext mc)
値が(thisn)であるBigDecimalを返します。 現在の実装では、コンテキスト設定に従った丸めでANSI規格X3.274-1996で定義されたコア・アルゴリズムを使用しています。 一般的に、返された数値は、選択された精度の正確な数値の2 ulp以内です。 将来のリリースでは、誤差の許容範囲を狭め、指数の許容範囲を拡大した別のアルゴリズムを使用する可能性があります。X3.274-1996アルゴリズムは、次のとおりです。
-
ArithmeticException例外は次の条件に当てはまる場合にスローされるabs(n) > 999999999mc.precision == 0かつn < 0mc.precision> 0、かつnがmc.precisionの10進桁数より大きい
-
nが0の場合、thisが0でもONEが返される。それ以外の場合は、次のようになる-
nが正の場合、二乗法を繰り返して単一のアキュムレータに入れることで結果が計算される。 アキュムレータを持つ個々の乗算では、mc.precision+elength+1(elengthはn内の10進桁数)に上げた精度を除き、mcと同じ数学コンテキスト設定を使用する。 -
nが負の場合、nが正であるかのように結果が計算される。その後、この値は前述の有効な精度を使用して1より除算される。 - 正または負の場合の最終的な値が、目標の精度に丸められる。
-
- パラメータ:
n- このBigDecimalの累乗。mc- 使用するコンテキスト。- 戻り値:
- ANSI standard X3.274-1996アルゴリズムを使用した
thisn - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合、またはnが範囲外である場合。- 導入されたバージョン:
- 1.5
-
-
abs
public BigDecimal abs()
値がこのBigDecimalの絶対値でスケールがthis.scale()であるBigDecimalを返します。- 戻り値:
abs(this)
-
abs
public BigDecimal abs(MathContext mc)
コンテキスト設定に従った丸めを使用して、値がこのBigDecimalの絶対値であるBigDecimalを返します。- パラメータ:
mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
abs(this)。 - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
negate
public BigDecimal negate()
値が(-this)でスケールがthis.scale()であるBigDecimalを返します。- 戻り値:
-this。
-
negate
public BigDecimal negate(MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(-this)であるBigDecimalを返します。- パラメータ:
mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
-this。 - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
-
plus
public BigDecimal plus()
値が(+this)でスケールがthis.scale()であるBigDecimalを返します。この
BigDecimalを単に返すだけのこのメソッドは、単項マイナス・メソッドnegate()の対称として含まれています。- 戻り値:
this。- 導入されたバージョン:
- 1.5
- 関連項目:
negate()
-
plus
public BigDecimal plus(MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(+this)であるBigDecimalを返します。このメソッドの効果は、
round(MathContext)メソッドの効果と同じです。- パラメータ:
mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this。 0の結果のスケールは0 - 例外:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合。- 導入されたバージョン:
- 1.5
- 関連項目:
round(MathContext)
-
signum
public int signum()
このBigDecimalの符号要素を返します。- 戻り値:
- この
BigDecimalが負の場合は -1、ゼロの場合は0、正の場合は1。
-
scale
public int scale()
このBigDecimalのスケールを返します。 0または正の場合、スケールは小数点以下の桁数です。 負の場合、スケールなしの数値に、スケールの正負を逆にした値を指数とする10の累乗を乗算します。 たとえば、-3のスケールでは、スケールなしの値に1000が乗算されます。- 戻り値:
- この
BigDecimalのスケール。
-
precision
public int precision()
このBigDecimalの精度を返します。 精度とは、スケールなしの値の桁数のことです。0の精度は1です。
- 戻り値:
- この
BigDecimalの精度。 - 導入されたバージョン:
- 1.5
-
unscaledValue
public BigInteger unscaledValue()
値がこのBigDecimalのスケールなしの値であるBigIntegerを返します。 ((this * 10this.scale())を計算する。)- 戻り値:
- この
BigDecimalのスケールなしの値。 - 導入されたバージョン:
- 1.2
-
round
public BigDecimal round(MathContext mc)
MathContext設定に従って丸められたBigDecimalを返します。 精度設定が0の場合、丸めは実行されません。このメソッドの効果は、
plus(MathContext)メソッドの効果と同じです。- パラメータ:
mc- 使用するコンテキスト。- 戻り値:
MathContext設定に従って丸められたBigDecimal。- 例外:
ArithmeticException- 丸めモードがUNNECESSARYで、BigDecimal演算に丸めが必要な場合。- 導入されたバージョン:
- 1.5
- 関連項目:
plus(MathContext)
-
setScale
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
スケールが指定された値であり、かつスケールなしの値が、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗の積または商により決定されるBigDecimalを返します。 スケールが演算で減らされる場合、スケールなしの値は(乗算ではなく)除算する必要があり、値が変わる可能性があります。この場合、指定した丸めモードが除算に適用されます。- APIのノート:
- BigDecimalオブジェクトは不変であるため、
setXmutate fieldXというメソッドを持つ通常の規約に反して、このメソッドを呼び出すと元のオブジェクトが変更されることはありません。 代わりに、setScaleは適切なスケールを持つオブジェクトを返します。返されたオブジェクトは、新しく割り当てられる場合とそうでない場合があります。 - パラメータ:
newScale- 返されるBigDecimalの値のスケール。roundingMode- 適用する丸めモード。- 戻り値:
- スケールが指定された値の
BigDecimal。そのスケールなしの値は、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗との積または商により決定されます。 - 例外:
ArithmeticException-roundingMode==UNNECESSARYであり、指定したスケール演算で丸めが必要な場合。- 導入されたバージョン:
- 1.5
- 関連項目:
RoundingMode
-
setScale
@Deprecated(since="9") public BigDecimal setScale(int newScale, int roundingMode)
非推奨。このsetScale(int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。スケールが指定された値であり、かつスケールなしの値が、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗の積または商により決定されるBigDecimalを返します。 スケールが演算で減らされる場合、スケールなしの値は(乗算ではなく)除算する必要があり、値が変わる可能性があります。この場合、指定した丸めモードが除算に適用されます。- APIのノート:
- BigDecimalオブジェクトは不変であるため、
setXmutate fieldXというメソッドを持つ通常の規約に反して、このメソッドを呼び出すと元のオブジェクトが変更されることはありません。 代わりに、setScaleは適切なスケールを持つオブジェクトを返します。返されたオブジェクトは、新しく割り当てられる場合とそうでない場合があります。 - パラメータ:
newScale- 返されるBigDecimalの値のスケール。roundingMode- 適用する丸めモード。- 戻り値:
- スケールが指定された値の
BigDecimal。そのスケールなしの値は、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗との積または商により決定されます。 - 例外:
ArithmeticException-roundingMode==ROUND_UNNECESSARYであり、指定したスケール演算で丸めが必要な場合。IllegalArgumentException-roundingModeが有効な丸めモードを表さない場合。- 関連項目:
ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UNNECESSARY
-
setScale
public BigDecimal setScale(int newScale)
スケールが指定された値であり、値がこのBigDecimalと同じ数値である、BigDecimalを返します。 これが不可能な場合、ArithmeticExceptionをスローします。通常、この呼出しはスケールの拡張に使用され、その場合には指定されたスケールと正しい値の
BigDecimalの存在が保証されます。 値を変更することなく再スケーリングを行うのに十分な0がBigDecimalの小数部(その整数値における10の因数)の最後にあることを呼出し側が認識している場合、この呼出しはスケールの縮小にも使用できます。このメソッドは
setScaleの2つの引数を使うバージョンと同じ結果を返しますが、丸めを指定する必要のない場合に、呼出し側は丸めモードを指定する手間を省くことができます。- APIのノート:
BigDecimalオブジェクトは不変なので、setXmutate fieldXというメソッドを持つ通常の規約に反して、このメソッドを呼び出すと元のオブジェクトが変更されることはありません。 代わりに、setScaleは適切なスケールを持つオブジェクトを返します。返されたオブジェクトは、新しく割り当てられる場合とそうでない場合があります。- パラメータ:
newScale- 返されるBigDecimalの値のスケール。- 戻り値:
- スケールが指定された値の
BigDecimal。そのスケールなしの値は、このBigDecimalのスケールなしの値と、総体値を維持できる適当な10の累乗との積または商により決定されます。 - 例外:
ArithmeticException- 指定したスケール演算で丸めが必要な場合。- 関連項目:
setScale(int, int),setScale(int, RoundingMode)
-
movePointLeft
public BigDecimal movePointLeft(int n)
小数点をn桁左へ移動してこれに等しいBigDecimalを返します。nが負でない場合は、スケールにnを単に加算します。nが負の場合は、movePointRight(-n)に等しくなります。 この呼出しによって返されるBigDecimalは、値(this×10-n)およびスケールmax(this.scale()+n, 0)となります。- パラメータ:
n- 小数点を左へ移動する桁数。- 戻り値:
- 小数点を
n桁左へ移動した、これに等しいBigDecimal。 - 例外:
ArithmeticException- スケールがオーバーフローする場合。
-
movePointRight
public BigDecimal movePointRight(int n)
小数点をn桁右へ移動してこれに等しいBigDecimalを返します。nが負でない場合は、スケールからnを単に減算します。nが負の場合は、movePointLeft(-n)に等しくなります。 この呼出しによって返されるBigDecimalは、値(this×10n)およびスケールmax(this.scale()-n, 0)となります。- パラメータ:
n- 小数点を右へ移動する桁数。- 戻り値:
- 小数点を
n桁右へ移動した、これに等しいBigDecimal。 - 例外:
ArithmeticException- スケールがオーバーフローする場合。
-
scaleByPowerOfTen
public BigDecimal scaleByPowerOfTen(int n)
数値が(this* 10n)に等しいBigDecimalを返します。 結果のスケールは(this.scale() - n)です。- パラメータ:
n- スケールを指定する10の累乗の指数- 戻り値:
- 数値が(
this* 10n)に等しいBigDecimal - 例外:
ArithmeticException- スケールが32ビット整数の範囲外である場合。- 導入されたバージョン:
- 1.5
-
stripTrailingZeros
public BigDecimal stripTrailingZeros()
数値はこれに等しいが、末尾の0が表現から削除されたBigDecimalを返します。 たとえば、[6000, 1]に等しい[BigInteger,scale]コンポーネントを持つBigDecimal値600.0から末尾の0を取り除くと、[6, -2]に等しい[BigInteger,scale]コンポーネントを持つ6E2になります。 このBigDecimalの数値が0に等しい場合は、BigDecimal.ZEROが返されます。- 戻り値:
- 末尾の0がすべて削除された、数値の等しい
BigDecimal。 - 導入されたバージョン:
- 1.5
-
compareTo
public int compareTo(BigDecimal val)
このBigDecimalを指定されたBigDecimalと比較します。 このメソッドでは、値は等しいがスケールが異なる2つのBigDecimalオブジェクト(たとえば、2.0と2.00)が等しいと見なされます。 このメソッドは、6つのboolean型の比較演算子(<、==、>、>=、!=、<=)のそれぞれに対する個々のメソッドの代わりに提供されます。 これらの比較を行うには(x.compareTo(y)<op>0)という組合せをお薦めします。この場合、<op>には6つの比較演算子のうちの1つが入ります。- 定義:
compareTo、インタフェースComparable<BigDecimal>- パラメータ:
val- このBigDecimalと比較するBigDecimal。- 戻り値:
- この
BigDecimalの数値がvalより小さい場合は -1、等しい場合は0、大きい場合は1。
-
equals
public boolean equals(Object x)
このBigDecimalが指定されたObjectと同じかどうか比較します。compareToと違い、このメソッドは、2つのBigDecimalオブジェクトが値もスケールも同じである場合にだけ等しいと見なします(したがって、このメソッドでは2.0と2.00は等しくない)。- オーバーライド:
equals、クラスObject- パラメータ:
x- このBigDecimalと比較するObject。- 戻り値:
- 指定された
ObjectがBigDecimalで、その値とスケールがこのBigDecimalと等しい場合にだけtrue。 - 関連項目:
compareTo(java.math.BigDecimal),hashCode()
-
min
public BigDecimal min(BigDecimal val)
このBigDecimalとvalの最小値を返します。- パラメータ:
val- 最小値の計算に使用する値。- 戻り値:
- この
BigDecimalとvalのうちで小さい方の値を持つBigDecimal。 等しい場合は、compareToメソッドで定義されるように、thisが返されます。 - 関連項目:
compareTo(java.math.BigDecimal)
-
max
public BigDecimal max(BigDecimal val)
このBigDecimalとvalの最大値を返します。- パラメータ:
val- 最大値の計算に使用する値。- 戻り値:
- この
BigDecimalとvalのうちで大きい方の値を持つBigDecimal。 等しい場合は、compareToメソッドで定義されるように、thisが返されます。 - 関連項目:
compareTo(java.math.BigDecimal)
-
hashCode
public int hashCode()
このBigDecimalのハッシュ・コードを返します。 値が等しいがスケールが異なる2つのBigDecimalオブジェクト(たとえば、2.0と2.00)のハッシュ・コードは、通常は同じではありません。- オーバーライド:
hashCode、クラスObject- 戻り値:
- この
BigDecimalのハッシュ・コード。 - 関連項目:
equals(Object)
-
toString
public String toString()
指数が必要な場合、科学表記法で、このBigDecimalの文字列表現を返します。BigDecimalの正規の文字列形式は、次のステップで作成されます。まず、BigDecimalのスケールなしの値の絶対値が、「0」から「9」までの文字を使用した、先頭に0が付かない文字列(基数10)に変換されます(ただし、値が0である場合は、単一の文字「0」が使用される)。次に、調整された指数が計算されます。これは、正負を逆にしたスケールに、変換されたスケールなしの値の文字数を加算したものから1を減算したものです。 つまり、
-scale+(ulength-1)であり、ulengthは10進数のスケールなしの値の絶対値の長さ(精度)です。スケールが0以上で、調整された指数が
-6以上である場合、数値は指数表現なしの文字形式に変換されます。 この場合、スケールが0のときは小数点は追加されません。スケールが正のときは、小数点がスケールとともに挿入され、小数点以下の文字数が指定されます。必要に応じて、変換されたスケールなしの値の左に文字「0」が追加されます。 この挿入のあとに小数点に先行する文字がない場合は、先頭に通常の文字「0」が付けられます。その他の場合(つまり、スケールが負、または調整された指数が
-6未満の場合)、数値は指数表現を使用して文字形式に変換されます。 この場合、変換されたBigIntegerに複数の桁があるとき、最初の桁の後ろに小数点が挿入されます。 次に、変換されたスケールなしの値の後ろに、(挿入された小数点とともに)文字形式の指数が付けられます。これは、文字「E」、およびその直後の調整された指数を文字形式に変換したもので構成されます。 後者は基数10で、先頭に0が付かず、「0」から「9」を使用し、調整された指数が負の場合は必ず先頭に符号文字「-」(「u002D」)、そうでない場合は「+」(「\u002B」)が付いています。最後に、スケールなしの値が0未満の場合は、文字列全体の先頭にマイナス符号文字「
-」(「\u002D」)が付けられます。 スケールなしの値が0または正の場合、符号文字は付けられません。例:
各表現の左側は[unscaled value, scale]、右側は結果の文字列を示します。
[123,0] "123" [-123,0] "-123" [123,-1] "1.23E+3" [123,-3] "1.23E+5" [123,1] "12.3" [123,5] "0.00123" [123,10] "1.23E-8" [-123,12] "-1.23E-10"
ノート:- 区別可能な
BigDecimal値とこの変換の結果の間には、1対1のマッピングがあります。 つまり、すべての区別可能なBigDecimal値(スケールなしの値とスケール)は、toStringを使用した結果として、一意の文字列表現を持ちます。BigDecimal(String)コンストラクタを使用してその文字列表現をBigDecimalに戻すと、元の値が復元されます。 - 特定の数値のために生成された文字列は常に同じであり、ロケールによる影響は受けません。 これは、10進数データを交換するための正規の文字列表現、つまりハッシュ表のキーなどとして使用することができることを意味します。ロケールに依存する数値の書式設定と解析は、
NumberFormatクラスとそのサブクラスによって処理されます。 - 技術表記法での指数を使用した数値表現には
toEngineeringString()メソッドを使用でき、BigDecimalの丸めには小数点以下の桁数が既知であるsetScaleメソッドを使用できます。 Character.forDigitにより提供される数字から文字へのマッピングが使用されます。
- オーバーライド:
toString、クラスObject- 戻り値:
- この
BigDecimalの文字列表現。 - 関連項目:
Character.forDigit(int, int),BigDecimal(java.lang.String)
- 区別可能な
-
toEngineeringString
public String toEngineeringString()
指数が必要な場合、技術表記法で、このBigDecimalの文字列表現を返します。toString()メソッドで記述されているように、BigDecimalを表す文字列を返します。ただし、指数表現が使用される場合、0でない値の整数部が1から999の範囲に収まるように、10の累乗は3の倍数(技術表記法)に調整されます。 値0について指数表現が使用される場合、値0のスケールを維持するために小数点と1つまたは2つの小数部の桁が使用されます。toString()の出力と違い、このメソッドの出力では、文字列コンストラクタを使用して出力文字列をBigDecimalに戻したときに、BigDecimalの同じ[integer, scale]ペアの復元は保証されないことに注意してください。 このメソッドの結果は、文字列コンストラクタをメソッドの出力に適用した結果と等価な数値を常に生成するという弱い制約を満たします。- 戻り値:
- 指数が必要な場合、技術表記法による、この
BigDecimalの文字列表現。 - 導入されたバージョン:
- 1.5
-
toPlainString
public String toPlainString()
指数フィールドなしで、このBigDecimalの文字列表現を返します。 正のスケールを持つ値の場合、小数点以下の桁数は、スケールを示すために使用されます。 スケールが0または負の値の場合、結果の文字列は、その値がスケール0を持つ数値的に等価な値に変換され、スケール0の値の末尾の0すべてが結果に存在するかのように生成されます。 スケールなしの値が0未満の場合、文字列全体の先頭にマイナス符号文字「-」(「\u002D」)が付けられます。 スケールなしの値が0または正の場合、符号文字は付けられません。 このメソッドの結果が文字列コンストラクタに渡される場合、このBigDecimalの数値だけが必ず復元されます。新しいBigDecimalの表現は異なるスケールを持つ可能性があります。 特に、このBigDecimalが負のスケールを持つ場合、このメソッドの結果の文字列は、文字列コンストラクタによって処理されるときにスケール0を持ちます。 (このメソッドの動作は、1.4以前のリリースでのtoStringメソッドと同様です。)- 戻り値:
- 指数フィールドのない、この
BigDecimalの文字列表現。 - 導入されたバージョン:
- 1.5
- 関連項目:
toString(),toEngineeringString()
-
toBigInteger
public BigInteger toBigInteger()
このBigDecimalをBigIntegerに変換します。 この変換は、doubleからlongへのプリミティブ変換を狭めるに似ています。Java™言語仕様で定義されています: このBigDecimalの小数部分は破棄されます。 この変換により、BigDecimal値の精度に関する情報が失われる可能性があります。変換が正確でない(つまり、0以外の小数部が破棄される)場合に例外をスローするには、
toBigIntegerExact()メソッドを使用してください。- 戻り値:
BigIntegerに変換されたこのBigDecimal。- Java™言語仕様を参照します:
- 5.1.3プリミティブ変換の絞り込み
-
toBigIntegerExact
public BigInteger toBigIntegerExact()
このBigDecimalをBigIntegerに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある場合、例外がスローされます。- 戻り値:
BigIntegerに変換されたこのBigDecimal。- 例外:
ArithmeticException-thisが0以外の小数部を持つ場合。- 導入されたバージョン:
- 1.5
-
longValue
public long longValue()
このBigDecimalをlongに変換します。 この変換は、doubleからshortへのプリミティブ変換を狭めるに似ています。Java™言語仕様で定義されています: このBigDecimalの小数部分は破棄され、結果として生じる"BigInteger"が大きすぎてlongに収まらない場合は、下位64ビットのみが返されます。 この変換により、このBigDecimal値の絶対値と精度全体に関する情報が失われ、逆の符号で返される可能性があります。
-
longValueExact
public long longValueExact()
このBigDecimalをlongに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはlongの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。- 戻り値:
longに変換されたこのBigDecimal。- 例外:
ArithmeticException-thisが0以外の小数部を持つ、またはlong内に収まらない場合。- 導入されたバージョン:
- 1.5
-
intValue
public int intValue()
このBigDecimalをintに変換します。 この変換は、doubleからshortへのプリミティブ変換を狭めるに似ています。Java™言語仕様で定義されています: このBigDecimalの小数部分は破棄され、結果として生じる"BigInteger"が大きすぎてintに収まらない場合は、下位32ビットのみが返されます。 この変換により、このBigDecimal値の絶対値と精度全体に関する情報が失われ、逆の符号で返される可能性があります。
-
intValueExact
public int intValueExact()
このBigDecimalをintに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはintの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。- 戻り値:
intに変換されたこのBigDecimal。- 例外:
ArithmeticException-thisが0以外の小数部を持つ、またはint内に収まらない場合。- 導入されたバージョン:
- 1.5
-
shortValueExact
public short shortValueExact()
このBigDecimalをshortに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはshortの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。- 戻り値:
shortに変換されたこのBigDecimal。- 例外:
ArithmeticException-thisが0以外の小数部を持つ、またはshort内に収まらない場合。- 導入されたバージョン:
- 1.5
-
byteValueExact
public byte byteValueExact()
このBigDecimalをbyteに変換し、失われた情報がないかどうかを確認します。 このBigDecimalに0以外の小数部がある、またはbyteの結果として可能な範囲外である場合、ArithmeticExceptionがスローされます。- 戻り値:
byteに変換されたこのBigDecimal。- 例外:
ArithmeticException-thisが0以外の小数部を持つ、またはbyte内に収まらない場合。- 導入されたバージョン:
- 1.5
-
floatValue
public float floatValue()
このBigDecimalをfloatに変換します。 この変換は、Java™言語仕様で定義されているdoubleからfloatへのプリミティブ変換を狭めるに似ています: このBigDecimalが大きすぎてfloatとして表現できない場合は、Float.NEGATIVE_INFINITYまたはFloat.POSITIVE_INFINITYに適宜変換されます。 戻り値が有限である場合も、この変換により、BigDecimal値の精度に関する情報が失われる可能性があります。- 定義:
floatValue、クラスNumber- 戻り値:
floatに変換されたこのBigDecimal。- Java™言語仕様を参照します:
- 5.1.3プリミティブ変換の絞り込み
-
doubleValue
public double doubleValue()
このBigDecimalをdoubleに変換します。 この変換は、Java™言語仕様で定義されているdoubleからfloatへのプリミティブ変換を狭めるに似ています: このBigDecimalの大きさがdoubleの大きさを超えている場合は、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
-
-