クラスBigDecimal
- すべての実装されたインタフェース:
Serializable,Comparable<BigDecimal>
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()などのメソッドの結果は、異なる表現を持つ数値で異なります。
一般に、端数処理モードと精度の設定によって、正確な結果に返される桁数よりも桁数が(分裂と平方根の場合にはおそらく無限に多く)の桁数が多い場合に、操作が限られた桁数で結果を返す方法が決まります。 まず、返される桁の合計数はMathContextのprecision設定で指定されます。これにより、結果の精度が決定されます。 桁数のカウントは、正確な結果のもっとも左の0でない桁から始まります。 丸めモードでは、破棄される桁が返される結果にどのように影響するかが決定されます。
すべての算術演算子について、最初に正確な中間結果が計算されたかのように演算が実行され、選択した丸めモードを使用して、精度設定(必要に応じて)で指定された桁数に丸められます。 正確な結果が返されない場合、正確な結果のいくつかの桁位置が破棄されます。 丸めにより、返される結果の絶対値が増える場合、先頭の「9」の桁に対して桁の繰上げを実行することで新しい桁位置を作成できます。 たとえば、999.9という値を切り上げて3桁に丸めると、1000と等しくなり、これは100×101として表現されます。 このような場合、新しい「1」が返される結果の先頭の桁位置になります。
MathContextパラメータのあるメソッドおよびコンストラクタでは、結果が正確でなく、丸めモードがUNNECESSARYの場合、 ArithmeticExceptionがスローされます。
論理的に正確な結果のほか、各算術演算には結果を表現するために優先されるスケールがあります。 各演算の優先スケールを、次の表に示します。
| 操作 | 優先される結果のスケール |
|---|---|
| 追加 | max(addend.scale(), augend.scale()) |
| 減算 | max(minuend.scale(), subtrahend.scale()) |
| 乗算 | multiplier.scale() + multiplicand.scale() |
| 除算 | dividend.scale() - divisor.scale() |
| 平方根 | radicand.scale()/2 |
1/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を返します。
32ビット整数として、スケールの値セットは大きいが、制限されています。 結果のスケールがオーバーフローまたはアンダー・フローによって32ビット整数範囲を超える場合、その操作はArithmeticExceptionをスローする可能性があります。
説明をわかりやすく簡潔にするために、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の「自然順序付け」は「equalsと矛盾」であるため、BigDecimalオブジェクトがSortedMapのキーまたはSortedSetの要素として使用されている場合は注意が必要です。 詳細は、Comparable、SortedMapまたは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つ以上の値を入力として受け入れ、同じ形式で結果を生成します。BigDecimalのscaleは、IEEE 754値の指数を無視することと同じです。BigDecimal値の形式は同じ意味ではありません。すべての値のスケール/指数の範囲が同じであり、「スケールなしの値」の精度は任意です。 かわりに、MathContextパラメータを使用するBigDecimal操作の場合、MathContextにゼロ以外の精度がある場合、結果の表現可能な値のセットは、MathContext引数の精度によって決まります。 たとえば、BigDecimalでは、精度が3のMathContextオブジェクトのコンテキストで、0以外の3桁の数値と0以外の4桁数を乗算すると、結果は3桁の(オーバーフローやアンダー・フローなどがないと想定します。)になります。「端数処理モード」で示される
BigDecimal操作によって実装される端数処理ポリシーは、IEEE 754端数処理方向属性の適切なスーパーセットです。BigDecimal演算は、IEEE 754小数形式に対応するMathContext(decimal64やdecimal128など)がすべての開始値と中間演算の丸めに使用される場合、IEEE 754進数の演算に最も似ています。MathContextがBigDecimalの結果のスケールを制約しないために、近似している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非推奨。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 BigDecimal0のスケールを持つ値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) 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に変換します。 -
メソッドのサマリー
修飾子と型メソッド説明abs()値がこのBigDecimalの絶対値でスケールがthis.scale()であるBigDecimalを返します。abs(MathContext mc) コンテキスト設定に従った丸めを使用して、値がこのBigDecimalの絶対値であるBigDecimalを返します。add(BigDecimal augend) 値が(this+augend)でスケールがmax(this.scale(), augend.scale())であるBigDecimalを返します。add(BigDecimal augend, MathContext mc) コンテキスト設定に従った丸めを使用して、値が(this+augend)であるBigDecimalを返します。byteこのBigDecimalをbyteに変換し、失われた情報がないかどうかを確認します。intcompareTo(BigDecimal val) このBigDecimalを指定されたBigDecimalと比較します。divide(BigDecimal divisor) 値が(this /divisor)で優先スケールが(this.scale() - divisor.scale())であるBigDecimalを返します。(小数点以下が無限となるため)正確な商を表現できない場合、ArithmeticExceptionがスローされます。divide(BigDecimal divisor, int roundingMode) 非推奨。このdivide(BigDecimal, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。divide(BigDecimal divisor, int scale, int roundingMode) 非推奨。このdivide(BigDecimal, int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。divide(BigDecimal divisor, int scale, RoundingMode roundingMode) 値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。divide(BigDecimal divisor, MathContext mc) コンテキスト設定に従った丸めを使用して、値が(this /divisor)であるBigDecimalを返します。divide(BigDecimal divisor, RoundingMode roundingMode) 値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。divideAndRemainder(BigDecimal divisor) divideToIntegralValueの結果とそれに続く2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。divideAndRemainder(BigDecimal divisor, MathContext mc) コンテキスト設定に従った丸めを使用して計算されたdivideToIntegralValueの結果と、2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。divideToIntegralValue(BigDecimal divisor) 値が丸められた商(this /divisor)の整数部であるBigDecimalを返します。divideToIntegralValue(BigDecimal divisor, MathContext mc) 値が(this /divisor)の整数部であるBigDecimalを返します。doubleこのBigDecimalをdoubleに変換します。booleanこのBigDecimalが指定されたObjectと同じかどうか比較します。floatこのBigDecimalをfloatに変換します。inthashCode()このBigDecimalのハッシュ・コードを返します。intintValue()このBigDecimalをintに変換します。intこのBigDecimalをintに変換し、失われた情報がないかどうかを確認します。longこのBigDecimalをlongに変換します。longこのBigDecimalをlongに変換し、失われた情報がないかどうかを確認します。max(BigDecimal val) このBigDecimalとvalの最大値を返します。min(BigDecimal val) このBigDecimalとvalの最小値を返します。movePointLeft(int n) 小数点をn桁左へ移動してこれに等しいBigDecimalを返します。movePointRight(int n) 小数点をn桁右へ移動してこれに等しいBigDecimalを返します。multiply(BigDecimal multiplicand) 値が(this × multiplicand)で、スケールが(this.scale() + multiplicand.scale())のBigDecimalを返します。multiply(BigDecimal multiplicand, MathContext mc) コンテキスト設定に従って丸めを行い、値が(this × multiplicand)のBigDecimalを返します。negate()値が(-this)でスケールがthis.scale()であるBigDecimalを返します。negate(MathContext mc) コンテキスト設定に従った丸めを使用して、値が(-this)であるBigDecimalを返します。plus()値が(+this)でスケールがthis.scale()であるBigDecimalを返します。plus(MathContext mc) コンテキスト設定に従った丸めを使用して、値が(+this)であるBigDecimalを返します。pow(int n) 値が(thisn)のBigDecimalを返します。電力は正確に無制限の精度で計算されます。pow(int n, MathContext mc) 値が(thisn)のBigDecimalを返します。intこのBigDecimalの精度を返します。remainder(BigDecimal divisor) 値が(this % divisor)であるBigDecimalを返します。remainder(BigDecimal divisor, MathContext mc) コンテキスト設定に従った丸めを使用して、値が(this % divisor)であるBigDecimalを返します。round(MathContext mc) MathContext設定に従って丸められたBigDecimalを返します。intscale()このBigDecimalのスケールを返します。scaleByPowerOfTen(int n) 数値が(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このBigDecimalをshortに変換し、失われた情報がないかどうかを確認します。intsignum()このBigDecimalの符号要素を返します。sqrt(MathContext mc) コンテキスト設定に従って丸めを使用して、thisの平方根への近似を返します。数値はこれに等しいが、末尾の0が表現から削除されたBigDecimalを返します。subtract(BigDecimal subtrahend) 値が(this - subtrahend)でスケールがmax(this.scale(), subtrahend.scale())であるBigDecimalを返します。subtract(BigDecimal subtrahend, MathContext mc) コンテキスト設定に従った丸めを使用して、値が(this - subtrahend)であるBigDecimalを返します。このBigDecimalをBigIntegerに変換します。このBigDecimalをBigIntegerに変換し、失われた情報がないかどうかを確認します。指数が必要な場合、技術表記法で、このBigDecimalの文字列表現を返します。指数フィールドなしで、このBigDecimalの文字列表現を返します。toString()指数が必要な場合、科学表記法で、このBigDecimalの文字列表現を返します。ulp()このBigDecimalのulp (最終桁単位)のサイズを返します。値がこの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
-
ONE
-
TWO
-
TEN
-
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-inがBigDecimalの有効な表現でない場合、または定義された部分配列が完全に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-inがBigDecimalの有効な表現でない場合、または定義された部分配列が完全にin内にない場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(char[] in) BigDecimalの文字配列表現をBigDecimalに変換し、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。- 実装上のノート:
- 文字シーケンスが文字配列としてすでに使用可能である場合、このコンストラクタを使用する方が、
char配列を文字列に変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。 - パラメータ:
in- 文字のソースであるchar配列。- スロー:
NumberFormatException-inがBigDecimalの有効な表現でない場合。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(char[] in, MathContext mc) BigDecimalの文字配列表現をBigDecimalに変換し、コンテキスト設定に従った丸めを使用して、同じ文字シーケンスをBigDecimal(String)コンストラクタとして受け取ります。- 実装上のノート:
- 文字シーケンスが文字配列としてすでに使用可能である場合、このコンストラクタを使用する方が、
char配列を文字列に変換し、BigDecimal(String)コンストラクタを使用するよりも高速です。 - パラメータ:
in- 文字のソースであるchar配列。mc- 使用するコンテキスト。- スロー:
NumberFormatException-inがBigDecimalの有効な表現でない場合。- 導入されたバージョン:
- 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:
eE- 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、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- 使用するコンテキスト。- スロー:
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- 使用するコンテキスト。- スロー:
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- 使用するコンテキスト。- 導入されたバージョン:
- 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) intをBigDecimalに変換します。BigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するint値。- 導入されたバージョン:
- 1.5
-
BigDecimal
public BigDecimal(int val, MathContext mc) コンテキスト設定に従った丸めを使用して、intをBigDecimalに変換します。 丸めを行う前のBigDecimalのスケールは0です。- パラメータ:
val-BigDecimalに変換するint値。mc- 使用するコンテキスト。- 導入されたバージョン:
- 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- 使用するコンテキスト。- 導入されたバージョン:
- 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。 - 導入されたバージョン:
- 1.5
-
subtract
public BigDecimal subtract(BigDecimal subtrahend) 値が(this - subtrahend)でスケールがmax(this.scale(), subtrahend.scale())であるBigDecimalを返します。- パラメータ:
subtrahend- このBigDecimalから減算する値。- 戻り値:
this - subtrahend
-
subtract
public BigDecimal subtract(BigDecimal subtrahend, MathContext mc) コンテキスト設定に従った丸めを使用して、値が(this - subtrahend)であるBigDecimalを返します。subtrahendが0である場合、必要に応じて丸められたthisの値が結果として使用されます。 thisが0である場合、結果はsubtrahend.negate(mc)です。- パラメータ:
subtrahend- このBigDecimalから減算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this - subtrahend。 - 導入されたバージョン:
- 1.5
-
multiply
public BigDecimal multiply(BigDecimal multiplicand) 値が(this × multiplicand)で、スケールが(this.scale() + multiplicand.scale())のBigDecimalを返します。- パラメータ:
multiplicand- このBigDecimalで乗算する値。- 戻り値:
this * multiplicand
-
multiply
public BigDecimal multiply(BigDecimal multiplicand, MathContext mc) コンテキスト設定に従って丸めを行い、値が(this × multiplicand)のBigDecimalを返します。- パラメータ:
multiplicand- このBigDecimalで乗算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this * multiplicand。 - 導入されたバージョン:
- 1.5
-
divide
@Deprecated(since="9") public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 非推奨。このdivide(BigDecimal, int, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。 丸めを行い、指定したスケールで結果を生成する必要がある場合は、指定した丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。scale- 返されるBigDecimalの商のスケール。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- スロー:
ArithmeticException-divisorが0で、roundingMode==ROUND_UNNECESSARYであり、指定したスケールが除算の結果を正確に表すには十分でない場合。IllegalArgumentException-roundingModeが有効な丸めモードを表さない場合。- 関連項目:
-
divide
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) 値が(this /divisor)で、スケールが指定されたものであるBigDecimalを返します。 丸めを行い、指定したスケールで結果を生成する必要がある場合は、指定した丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。scale- 返されるBigDecimalの商のスケール。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- スロー:
ArithmeticException-divisorが0で、roundingMode==RoundingMode.UNNECESSARYであり、指定したスケールが除算の結果を正確に表すには十分でない場合。- 導入されたバージョン:
- 1.5
-
divide
@Deprecated(since="9") public BigDecimal divide(BigDecimal divisor, int roundingMode) 非推奨。このdivide(BigDecimal, RoundingMode)メソッドは、このレガシー・メソッドに優先して使用する必要があります。値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。 丸めを行い、特定のスケールで結果を生成する必要がある場合は、指定された丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- スロー:
ArithmeticException-divisor==0である場合、またはroundingMode==ROUND_UNNECESSARYであり、this.scale()が除算の結果を正確に表すには十分でない場合。IllegalArgumentException-roundingModeが有効な丸めモードを表さない場合。- 関連項目:
-
divide
public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode) 値が(this /divisor)でスケールがthis.scale()であるBigDecimalを返します。 丸めを行い、特定のスケールで結果を生成する必要がある場合は、指定された丸めモードが適用されます。- パラメータ:
divisor- このBigDecimalを除算する値。roundingMode- 適用する丸めモード。- 戻り値:
this / divisor- スロー:
ArithmeticException-divisor==0である場合、またはroundingMode==RoundingMode.UNNECESSARYであり、this.scale()が除算の結果を正確に表すには十分でない場合。- 導入されたバージョン:
- 1.5
-
divide
public BigDecimal divide(BigDecimal divisor) 値が(this /divisor)で優先スケールが(this.scale() - divisor.scale())であるBigDecimalを返します。(小数点以下が無限となるため)正確な商を表現できない場合、ArithmeticExceptionがスローされます。- パラメータ:
divisor- このBigDecimalを除算する値。- 戻り値:
this / divisor- スロー:
ArithmeticException- 正確な商業に終了する10進数の拡張がない場合(0で除算することを含む)- 導入されたバージョン:
- 1.5
-
divide
public BigDecimal divide(BigDecimal divisor, MathContext mc) コンテキスト設定に従った丸めを使用して、値が(this /divisor)であるBigDecimalを返します。- パラメータ:
divisor- このBigDecimalを除算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this /divisor。 - スロー:
ArithmeticException- 結果が不正確でも端数処理モードがUNNECESSARYまたはmc.precision == 0で、商がゼロ除算を含めて終了していない10進数展開がある場合- 導入されたバージョン:
- 1.5
-
divideToIntegralValue
public BigDecimal divideToIntegralValue(BigDecimal divisor) 値が丸められた商(this /divisor)の整数部であるBigDecimalを返します。 結果の優先スケールは(this.scale() - divisor.scale())です。- パラメータ:
divisor- このBigDecimalを除算する値。- 戻り値:
this /divisorの整数部。- スロー:
ArithmeticException-divisor==0の場合- 導入されたバージョン:
- 1.5
-
divideToIntegralValue
public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc) 値が(this /divisor)の整数部であるBigDecimalを返します。 正確な商の整数部は丸めモードに依存しないため、丸めモードはこのメソッドにより返される値に影響を及ぼしません。 結果の優先スケールは(this.scale() - divisor.scale())です。 正確な商の整数部にmc.precisionよりも多くの桁が必要な場合、ArithmeticExceptionがスローされます。- パラメータ:
divisor- このBigDecimalを除算する値。mc- 使用するコンテキスト。- 戻り値:
this /divisorの整数部。- スロー:
ArithmeticException-divisor==0の場合ArithmeticException-mc.precisionが0より大きく、結果にmc.precisionよりも桁数の多い精度が必要な場合。- 導入されたバージョン:
- 1.5
-
remainder
public BigDecimal remainder(BigDecimal divisor) 値が(this % divisor)であるBigDecimalを返します。剰余は、
this.subtract(this.divideToIntegralValue(divisor).multiply(divisor))で得られます。 これはモジュロ演算(結果は否定的な可能性があります)ではないことに注意してください。- パラメータ:
divisor- このBigDecimalを除算する値。- 戻り値:
this % divisor。- スロー:
ArithmeticException-divisor==0の場合- 導入されたバージョン:
- 1.5
-
remainder
public BigDecimal remainder(BigDecimal divisor, MathContext mc) コンテキスト設定に従った丸めを使用して、値が(this % divisor)であるBigDecimalを返します。MathContext設定は、剰余の計算に使用する暗黙的な除算に影響を及ぼします。 定義の示すとおり、剰余の計算自体は正確です。 そのため、剰余はmc.getPrecision()よりも多くの桁を含む可能性があります。剰余は、
this.subtract(this.divideToIntegralValue(divisor, mc).multiply(divisor))で得られます。 これはモジュロ演算ではない(負の結果が可能)であることに留意してください。- パラメータ:
divisor- このBigDecimalを除算する値。mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
this % divisor。 - スロー:
ArithmeticException-divisor==0の場合ArithmeticException- 結果が正確でなく、端数処理モードがUNNECESSARYまたはmc.precision> 0で、this.divideToIntegralValue(divisor)の結果にはmc.precision桁を超える精度が必要です。- 導入されたバージョン:
- 1.5
- 関連項目:
-
divideAndRemainder
public BigDecimal[] divideAndRemainder(BigDecimal divisor) divideToIntegralValueの結果とそれに続く2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。整数の商と剰余の両方が必要な場合、
divideToIntegralValueメソッドとremainderメソッドを別々に使用するより、除算を1回だけ実行すればよいこのメソッドの方が高速であることに留意してください。- パラメータ:
divisor- このBigDecimalを除算する値、および計算された剰余。- 戻り値:
- 2要素の
BigDecimal配列。商(divideToIntegralValueの結果)が最初の要素で、剰余が最後の要素。 - スロー:
ArithmeticException-divisor==0の場合- 導入されたバージョン:
- 1.5
- 関連項目:
-
divideAndRemainder
public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc) コンテキスト設定に従った丸めを使用して計算されたdivideToIntegralValueの結果と、2つのオペランドのremainderの結果を含む、2要素のBigDecimal配列を返します。整数の商と剰余の両方が必要な場合、
divideToIntegralValueメソッドとremainderメソッドを別々に使用するより、除算を1回だけ実行すればよいこのメソッドの方が高速であることに留意してください。- パラメータ:
divisor- このBigDecimalを除算する値、および計算された剰余。mc- 使用するコンテキスト。- 戻り値:
- 2要素の
BigDecimal配列。商(divideToIntegralValueの結果)が最初の要素で、剰余が最後の要素。 - スロー:
ArithmeticException-divisor==0の場合ArithmeticException- 結果が正確でなく、端数処理モードがUNNECESSARYまたはmc.precision> 0で、this.divideToIntegralValue(divisor)の結果にはmc.precision桁を超える精度が必要です。- 導入されたバージョン:
- 1.5
- 関連項目:
-
sqrt
public BigDecimal sqrt(MathContext mc) コンテキスト設定に従って丸めを使用して、thisの平方根への近似を返します。返される結果の優先スケールは
this.scale()/2に等しい。 返される結果の値は、常に、問題の精度に対する正確な小数値の1つのulp内にあります。 丸めモードがHALF_UP、HALF_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) > 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標準のX3.274-1996アルゴリズムを使用した
thisn - スロー:
ArithmeticException- 結果が正確でなく、丸めモードがUNNECESSARYの場合、またはnが範囲外である場合。- 導入されたバージョン:
- 1.5
-
-
abs
-
abs
public BigDecimal abs(MathContext mc) コンテキスト設定に従った丸めを使用して、値がこのBigDecimalの絶対値であるBigDecimalを返します。- パラメータ:
mc- 使用するコンテキスト。- 戻り値:
- 必要に応じて丸められた
abs(this)。 - 導入されたバージョン:
- 1.5
-
negate
-
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]コンポーネントを持つBigDecimal値600.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。- 戻り値:
- 指定された
ObjectがBigDecimalで、その値とスケールがこのBigDecimalと等しい場合にだけtrue。 - 関連項目:
-
min
public BigDecimal min(BigDecimal val) このBigDecimalとvalの最小値を返します。- パラメータ:
val- 最小値の計算に使用する値。- 戻り値:
- この
BigDecimalとvalのうちで小さい方の値を持つBigDecimal。 等しい場合は、compareToメソッドで定義されるように、thisが返されます。 - 関連項目:
-
max
public BigDecimal max(BigDecimal val) このBigDecimalとvalの最大値を返します。- パラメータ:
val- 最大値の計算に使用する値。- 戻り値:
- この
BigDecimalとvalのうちで大きい方の値を持つBigDecimal。 等しい場合は、compareToメソッドで定義されるように、thisが返されます。 - 関連項目:
-
hashCode
public int hashCode()このBigDecimalのハッシュ・コードを返します。 ハッシュ・コードは、このBigDecimalの「スケールなしの値」およびscaleの機能として計算されます。 -
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"
ノート:- 区別可能な
BigDecimal値とこの変換の結果の間には、1対1のマッピングがあります。 つまり、すべての区別可能なBigDecimal値(スケールなしの値とスケール)は、toStringを使用した結果として、一意の文字列表現を持ちます。BigDecimal(String)コンストラクタを使用してその文字列表現をBigDecimalに戻すと、元の値が復元されます。 - 特定の数値のために生成された文字列は常に同じであり、ロケールによる影響は受けません。 これは、10進数データを交換するための正規の文字列表現、つまりハッシュ表のキーなどとして使用することができることを意味します。ロケールに依存する数値の書式設定と解析は、
NumberFormatクラスとそのサブクラスによって処理されます。 - 技術表記法での指数を使用した数値表現には
toEngineeringString()メソッドを使用でき、BigDecimalの丸めには小数点以下の桁数が既知であるsetScaleメソッドを使用できます。 Character.forDigitにより提供される数字から文字へのマッピングが使用されます。
- 区別可能な
-
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()この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
-
RoundingMode.CEILINGを使用してください。