- すべての実装されたインタフェース:
Serializable
,Comparable<BigDecimal>
public class BigDecimal extends Number implements Comparable<BigDecimal>
BigDecimal
は、任意精度のスケールなしの整数値と、32ビット整数のスケールで構成されます。 0または正の場合、スケールは小数点以下の桁数です。 負の場合、スケールなしの数値に、スケールの正負を逆にした値を指数とする10の累乗を乗算します。 つまり、BigDecimal
で表される数値は(unscaledValue×10-scale)
です。
BigDecimal
クラスは、算術、スケール操作、丸め、比較、ハッシング、および書式変換の演算を提供します。 toString()
メソッドはBigDecimal
の正規表現を提供します。
BigDecimal
クラスは、ユーザーが丸め動作を完全に制御できるようにします。 丸めモードが指定されず、正確な結果が表現できない場合、例外がスローされます。そうでない場合、演算に適切なMathContext
オブジェクトを指定することで、選択された精度と丸めモードで計算が実行されます。 どちらの場合も、丸めの制御に8つの丸めモードが提供されます。 このクラスの整数フィールドを使用して、丸めモードを表す(ROUND_HALF_UP
など)は非推奨です。代わりにRoundingMode
enum
、(RoundingMode.HALF_UP
など)の列挙値を使用する必要があります。
MathContext
オブジェクトに精度設定0 (例: MathContext.UNLIMITED
)が指定されている場合、その算術メソッドはMathContext
オブジェクトを使用しないため、算術演算は正確です。 これは、リリース5より前でサポートされていた唯一の動作です。 結果の計算が正確であるため、精度0の設定を持つMathContext
オブジェクトの丸めモード設定は使用されず、無関係です。 除算の場合、正確な商は小数点以下が無限の長さを持つ可能性があります(例: 1÷3)。 商の小数点以下が無限で、演算が正確な結果を返すように指定されている場合、ArithmeticException
がスローされます。 そうでない場合、ほかの演算と同様に、除算の正確な結果が返されます。
精度設定が0でない場合、BigDecimal
の算術ルールは、ANSI X3.274-1996およびANSI X3.274-1996/AM 1-2000 (セクション7.4)で定義されている、選択された演算モードと広範な互換性があります。 これらの規格とは異なり、BigDecimal
には、リリース5より前のBigDecimal
の除算で必須だった多くの丸めモードがあります。 これらのANSI規格とBigDecimal
仕様の競合は、BigDecimal
を優先する方法で解決されます。
同じ数値でも表現が異なる(スケールが異なる)可能性があるため、算術および丸めのルールは、数値的な結果と、結果の表現に使用するスケールの両方を指定する必要があります。
通常、丸めモードと精度設定によって、正確な結果に返される桁数よりも多くの桁数(分裂と平方根の場合にはおそらく無限に多く)がある場合、桁数が制限された演算結果の返り方が決定されます。 まず、返される桁の合計数は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)
は、「値がBigDecimal
i
の値とBigDecimal
j
の値の和であるBigDecimal
」を示します。 擬似コード式(i == j)
は、「BigDecimal
i
がBigDecimal
j
と同じ値を表す場合にだけ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 BigDecimal
ONE
スケール0の値1です。static int
ROUND_CEILING
非推奨。代わりにRoundingMode.CEILING
を使用してください。static int
ROUND_DOWN
非推奨。代わりにRoundingMode.DOWN
を使用してください。static int
ROUND_FLOOR
非推奨。代わりにRoundingMode.FLOOR
を使用してください。static int
ROUND_HALF_DOWN
非推奨。代わりにRoundingMode.HALF_DOWN
を使用してください。static int
ROUND_HALF_EVEN
非推奨。代わりにRoundingMode.HALF_EVEN
を使用してください。static int
ROUND_HALF_UP
非推奨。代わりにRoundingMode.HALF_UP
を使用してください。static int
ROUND_UNNECESSARY
非推奨。代わりにRoundingMode.UNNECESSARY
を使用してください。static int
ROUND_UP
非推奨。代わりにRoundingMode.UP
を使用してください。static BigDecimal
TEN
スケール0の値10です。static BigDecimal
ZERO
スケール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
に変換します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 BigDecimal
abs()
値がこのBigDecimal
の絶対値でスケールがthis.scale()
であるBigDecimal
を返します。BigDecimal
abs(MathContext mc)
コンテキスト設定に従った丸めを使用して、値がこのBigDecimal
の絶対値であるBigDecimal
を返します。BigDecimal
add(BigDecimal augend)
値が(this+augend)
でスケールがmax(this.scale(), augend.scale())
であるBigDecimal
を返します。BigDecimal
add(BigDecimal augend, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this+augend)
であるBigDecimal
を返します。byte
byteValueExact()
このBigDecimal
をbyte
に変換し、失われた情報がないかどうかを確認します。int
compareTo(BigDecimal val)
このBigDecimal
を指定されたBigDecimal
と比較します。BigDecimal
divide(BigDecimal divisor)
値が(this /divisor)
で優先スケールが(this.scale() - divisor.scale())
であるBigDecimal
を返します。(小数点以下が無限となるため)正確な商を表現できない場合、ArithmeticException
がスローされます。BigDecimal
divide(BigDecimal divisor, int roundingMode)
非推奨。このdivide(BigDecimal, RoundingMode)
メソッドは、このレガシー・メソッドに優先して使用する必要があります。BigDecimal
divide(BigDecimal divisor, int scale, int roundingMode)
非推奨。このdivide(BigDecimal, int, RoundingMode)
メソッドは、このレガシー・メソッドに優先して使用する必要があります。BigDecimal
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
値が(this /divisor)
で、スケールが指定されたものであるBigDecimal
を返します。BigDecimal
divide(BigDecimal divisor, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this /divisor)
であるBigDecimal
を返します。BigDecimal
divide(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
配列を返します。BigDecimal
divideToIntegralValue(BigDecimal divisor)
値が丸められた商(this /divisor)
の整数部であるBigDecimal
を返します。BigDecimal
divideToIntegralValue(BigDecimal divisor, MathContext mc)
値が(this /divisor)
の整数部であるBigDecimal
を返します。double
doubleValue()
このBigDecimal
をdouble
に変換します。boolean
equals(Object x)
このBigDecimal
が指定されたObject
と同じかどうか比較します。float
floatValue()
このBigDecimal
をfloat
に変換します。int
hashCode()
このBigDecimal
のハッシュ・コードを返します。int
intValue()
このBigDecimal
をint
に変換します。int
intValueExact()
このBigDecimal
をint
に変換し、失われた情報がないかどうかを確認します。long
longValue()
このBigDecimal
をlong
に変換します。long
longValueExact()
このBigDecimal
をlong
に変換し、失われた情報がないかどうかを確認します。BigDecimal
max(BigDecimal val)
このBigDecimal
とval
の最大値を返します。BigDecimal
min(BigDecimal val)
このBigDecimal
とval
の最小値を返します。BigDecimal
movePointLeft(int n)
小数点をn
桁左へ移動してこれに等しいBigDecimal
を返します。BigDecimal
movePointRight(int n)
小数点をn
桁右へ移動してこれに等しいBigDecimal
を返します。BigDecimal
multiply(BigDecimal multiplicand)
値が(this×multiplicand)
でスケールが(this.scale()+multiplicand.scale())
であるBigDecimal
を返します。BigDecimal
multiply(BigDecimal multiplicand, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this×multiplicand)
であるBigDecimal
を返します。BigDecimal
negate()
値が(-this)
でスケールがthis.scale()
であるBigDecimal
を返します。BigDecimal
negate(MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(-this)
であるBigDecimal
を返します。BigDecimal
plus()
値が(+this)
でスケールがthis.scale()
であるBigDecimal
を返します。BigDecimal
plus(MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(+this)
であるBigDecimal
を返します。BigDecimal
pow(int n)
値が(thisn)
であるBigDecimal
を返します。累乗は、精度の制限なしで正確に計算されます。BigDecimal
pow(int n, MathContext mc)
値が(thisn)
であるBigDecimal
を返します。int
precision()
このBigDecimal
の精度を返します。BigDecimal
remainder(BigDecimal divisor)
値が(this % divisor)
であるBigDecimal
を返します。BigDecimal
remainder(BigDecimal divisor, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this % divisor)
であるBigDecimal
を返します。BigDecimal
round(MathContext mc)
MathContext
設定に従って丸められたBigDecimal
を返します。int
scale()
このBigDecimal
のスケールを返します。BigDecimal
scaleByPowerOfTen(int n)
数値が(this
* 10n)に等しいBigDecimalを返します。BigDecimal
setScale(int newScale)
スケールが指定された値であり、値がこのBigDecimal
と同じ数値であるBigDecimal
を返します。BigDecimal
setScale(int newScale, int roundingMode)
非推奨。このsetScale(int, RoundingMode)
メソッドは、このレガシー・メソッドに優先して使用する必要があります。BigDecimal
setScale(int newScale, RoundingMode roundingMode)
スケールが指定された値であり、かつスケールなしの値が、このBigDecimal
のスケールなしの値と、総体値を維持できる適当な10の累乗の積または商により決定されるBigDecimal
を返します。short
shortValueExact()
このBigDecimal
をshort
に変換し、失われた情報がないかどうかを確認します。int
signum()
このBigDecimal
の符号要素を返します。BigDecimal
sqrt(MathContext mc)
コンテキスト設定に従って四捨五入して、this
の平方根に対する近似値を返します。BigDecimal
stripTrailingZeros()
数値はこれに等しいが、末尾の0が表現から削除されたBigDecimal
を返します。BigDecimal
subtract(BigDecimal subtrahend)
値が(this - subtrahend)
でスケールがmax(this.scale(), subtrahend.scale())
であるBigDecimal
を返します。BigDecimal
subtract(BigDecimal subtrahend, MathContext mc)
コンテキスト設定に従った丸めを使用して、値が(this - subtrahend)
であるBigDecimal
を返します。BigInteger
toBigInteger()
このBigDecimal
をBigInteger
に変換します。BigInteger
toBigIntegerExact()
このBigDecimal
をBigInteger
に変換し、失われた情報がないかどうかを確認します。String
toEngineeringString()
指数が必要な場合、技術表記法で、このBigDecimal
の文字列表現を返します。String
toPlainString()
指数フィールドなしで、このBigDecimal
の文字列表現を返します。String
toString()
指数が必要な場合、科学表記法で、このBigDecimal
の文字列表現を返します。BigDecimal
ulp()
このBigDecimal
のulp (最終桁単位)のサイズを返します。BigInteger
unscaledValue()
値がこのBigDecimal
のスケールなしの値であるBigInteger
を返します。static BigDecimal
valueOf(double val)
Double.toString(double)
メソッドで提供されるdouble
の正規の文字列表現を使用して、double
をBigDecimal
に変換します。static BigDecimal
valueOf(long val)
long
値をスケールが0のBigDecimal
に変換します。static BigDecimal
valueOf(long unscaledVal, int scale)
long
のスケールなしの値とint
のスケールをBigDecimal
に変換します。
-
フィールド詳細
-
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:
+
-
- 仮数:
- 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の注:
float
およびdouble
NaNおよび±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
に変換したときと同じ結果にはなりません。 そのような結果を得るには、static
valueOf(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) > 999999999
mc.precision == 0
かつn < 0
mc.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オブジェクトは不変であるため、
setX
mutate 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オブジェクトは不変であるため、
setX
mutate 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
オブジェクトは不変なので、setX
mutate 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
値の絶対値と精度全体に関する情報が失われ、逆の符号で返される可能性があります。- 定義:
longValue
、クラス:Number
- 戻り値:
long
に変換されたこのBigDecimal
。- Java言語仕様を参照してください:
-
5.1.3 プリミティブ・コンバージョンの解説
-
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
値の絶対値と精度全体に関する情報が失われ、逆の符号で返される可能性があります。- 定義:
intValue
、クラス:Number
- 戻り値:
int
に変換されたこのBigDecimal
。- Java言語仕様を参照してください:
-
5.1.3 プリミティブ・コンバージョンの解説
-
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
-