BigDecimal クラス

定義

変更できない、任意の有効桁数の符号付き 10 進数。

[Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IComparable
[<Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)>]
type BigDecimal = class
    inherit Number
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IComparable
継承
BigDecimal
属性
実装

注釈

変更できない、任意の有効桁数の符号付き 10 進数。 は BigDecimal 、任意の有効桁数整数 #unscaledValue() 非スケーリング値 と 32 ビット整数 #scale() スケールで構成されます。 ゼロまたは正の場合、小数点以下桁数は小数点の右側の桁数です。 負の場合、数値のスケーリングされていない値に、スケールの否定の累乗に 10 を乗算します。 したがって(unscaledValue &times; 10<sup>-scale</sup>)、 で表される数値のBigDecimal値は です。

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

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

MathContext有効桁数を 0 に設定してオブジェクトを指定した場合 (たとえば、)、MathContext#UNLIMITED算術演算は、オブジェクトを受け取るMathContext算術メソッドと同様に正確です。 正確な結果を計算する補助として、有効桁数が 0 のオブジェクトの MathContext 丸めモード設定は使用されないため、無関係です。 除算の場合、正確な商は無限に長い 10 進数の拡張を持つことができます。たとえば、1 を 3 で除算します。 商に非終端の 10 進展開があり、正確な結果を返す演算が指定されている場合は、 ArithmeticException がスローされます。 それ以外の場合は、他の操作の場合と同様に、除算の正確な結果が返されます。

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

同じ数値は異なる表現 (スケールが異なる) を持つ可能性があるため、算術と丸めの規則では、結果の表現で使用される数値結果とスケールの両方を指定する必要があります。

同じ数値の異なる表現は、同じ コーホートのメンバーと呼ばれます。 #compareTo(BigDecimal) の BigDecimal 自然な順序では、同じコーホートのメンバーが互いに等しいと見なされます。 これに対し、 メソッドでは #equals(Object) equals 、等値を保持するために数値と表現の両方が同じである必要があります。 と #unscaledValue() のような#scale()メソッドの結果は、表現が異なる数値が等しい場合は異なります。

一般に、丸めモードと有効桁数の設定では、正確な結果の桁数 (除算と平方根の場合は無限に多い) が返される桁数よりも多い場合に、演算が限られた桁数で結果を返す方法を決定します。

最初に、返す合計桁数は のprecision設定でMathContext指定されます。これにより、結果の有効桁数が決まります。 数字の数は、正確な結果の左端の 0 以外の数字から始まります。 丸めモードは、破棄された末尾の数字が返された結果にどのように影響するかを決定します。

すべての算術演算子について、演算は、最初に正確な中間結果が計算されたかのように実行され、次に、選択した丸めモードを使用して、精度設定で指定された桁数 (必要な場合) に丸められます。 正確な結果が返されない場合、正確な結果の一部の桁位置は破棄されます。 丸めると返される結果の大きさが大きくなると、先頭の "9" 桁に伝達されるキャリーによって新しい桁の位置が作成される可能性があります。 たとえば、値 999.9 を 3 桁に丸めると、数値は 100&回として表される 1,000 に等しくなります。10<sup>1</sup>. このような場合、新しい "1" は返される結果の先頭の桁の位置です。

パラメーターを持つ MathContext メソッドとコンストラクターの場合、結果が不正確で丸めモードが である場合は RoundingMode#UNNECESSARY UNNECESSARYArithmeticException がスローされます。

論理的な正確な結果に加えて、各算術演算には、結果を表す適切なスケールがあります。 各操作に推奨されるスケールを次の表に示します。

<table class="striped" style="text-align:left">キャプション算術演算<の結果の推定スケール /キャプション<>thead<>tr><th scope="col">Operation</th th><scope="col">Preferred Scale of Result</th></tr<>/thead<>tbody<>tr><th scope="row">Add</th><td>max(), augend.scale()><)</td><tr><th scope="row">Subtract</th><td>max(minuend.scale(), subtrahend.scale())</td><tr><th scope="row">Multiply</th><td>multiplier.scale() + multiplicand.scale()</td><tr><th scope="row">Divide</th><td>dividend.scale() - divisor.scale()</td><tr><th scope="row">Square root</th><td>radicand.scale()/2</Td></tbody></table>

これらのスケールは、正確な算術結果を返すメソッドで使用されるスケールです。ただし、正確な結果の桁数が多い場合があるため、正確な除算ではより大きなスケールを使用する必要があります。 たとえば、1/320.03125 です。

丸める前に、論理正確な中間結果のスケールがその操作に推奨されるスケールです。 正確な数値の結果を数字で precision 表すことができない場合は、丸めによって返される数字のセットが選択され、結果のスケールは中間結果のスケールから、実際に返される数字を表 precision すことができる最小スケールに縮小されます。 正確な結果を最大 precision 桁数で表すことができる場合は、優先スケールに最も近いスケールで結果の表現が返されます。 特に、完全に表現可能な商は、末尾のゼロを削除し、スケールを小さくすることで、数字未満 precision で表される場合があります。 たとえば、RoundingMode#FLOOR 床丸めモードを使用して 3 桁に丸める場合、 <br>

19/100 = 0.19 // integer=19, scale=2<Br>

ただし、<br>

21/110 = 0.190 // integer=190, scale=3<Br>

加算、減算、乗算の場合、スケールの減少は破棄される正確な結果の桁位置の数と等しいことに注意してください。 丸めによってキャリー伝達によって新しい高次桁位置が作成される場合、新しい桁位置が作成されない場合よりも、結果の追加の桁が破棄されます。

他の方法では、丸めセマンティクスが若干異なる場合があります。 たとえば、指定された #pow(int, MathContext) アルゴリズムを使用するメソッドの結果は、最後の pow 場所で複数の単位 (1 つの #ulp() ulp) によって丸められた数学的結果と異なる場合があります。

のスケールを操作するには、スケーリング/丸め操作と小数点モーション操作の BigDecimal2 種類の操作が用意されています。 スケーリング/丸め操作 (#setScale setScale および #round round) は、値がオペランドの値とほぼ等しい (または正確に) が、スケールまたは有効桁数が指定された値である を返 BigDecimal します。つまり、格納されている数値の精度は、その値に与える影響を最小限に抑えて増減します。 小数点モーション演算 (#movePointLeft movePointLeft および ) は、 #movePointRight movePointRight指定した方向に指定した距離で小数点を移動することによってオペランドから作成された を返 BigDecimal します。

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

簡潔でわかりやすくするために、擬似コードはメソッドの BigDecimal 説明全体で使用されます。 擬似コード式(i + j)は、"BigDecimalの値が のに追加BigDecimaljされた BigDecimali の値である" の短縮形です。 擬似コード式(i == j)は、 が と同じ値jBigDecimalを表す場合BigDecimaliにのみ、 のtrue短縮形です。 その他の擬似コード式も同様に解釈されます。 角かっこは、値を定義する特定 BigInteger のとスケールのペアを BigDecimal 表すために使用されます。たとえば、[19, 2] は BigDecimal 2 のスケールを持つ 0.19 に等しい数値です。

このクラスのすべてのメソッドとコンストラクターは、入力パラメーターのオブジェクト参照がnull渡されたときにスローNullPointerExceptionされます。

1.1 に追加されました。

java.math.BigDecimalJava ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

コンストラクター

BigDecimal(BigInteger)

BigInteger に変換します BigDecimal

BigDecimal(BigInteger, Int32)

BigIntegerスケーリングされていない値とスケールを int に変換しますBigDecimal

BigDecimal(BigInteger, Int32, MathContext)

BigIntegerスケーリングされていない値とスケールを intBigDecimal変換し、コンテキスト設定に従って丸めます。

BigDecimal(BigInteger, MathContext)

BigInteger コンテキスト設定に BigDecimal 従って丸め処理に変換します。

BigDecimal(Char[])

の文字配列表現 BigDecimal を に BigDecimal変換し、コンストラクターと同じ文字シーケンスを #BigDecimal(String) 受け入れます。

BigDecimal(Char[], Int32, Int32)

の文字配列表現 BigDecimal を に BigDecimal変換し、コンストラクターと同じ文字シーケンスを #BigDecimal(String) 受け入れ、サブ配列を指定できるようにします。

BigDecimal(Char[], Int32, Int32, MathContext)

の文字配列表現 BigDecimal を に BigDecimal変換し、コンストラクターと同じ文字 #BigDecimal(String) シーケンスを受け入れますが、サブ配列を指定し、コンテキスト設定に従って丸めます。

BigDecimal(Char[], MathContext)

の文字配列表現 BigDecimal を に BigDecimal変換し、コンストラクターと同じ文字 #BigDecimal(String) シーケンスを受け入れ、コンテキスト設定に従って丸めます。

BigDecimal(Double)

doubleBigDecimal 変換します。これは、 のバイナリ浮動小数点値の double正確な 10 進数表現です。

BigDecimal(Double, MathContext)

double に変換し、 BigDecimalコンテキスト設定に従って丸めます。

BigDecimal(Int32)

intBigDecimal変換します。

BigDecimal(Int32, MathContext)

int に変換し、 BigDecimalコンテキスト設定に従って丸めます。

BigDecimal(Int64)

long に変換します BigDecimal

BigDecimal(Int64, MathContext)

long に変換し、 BigDecimalコンテキスト設定に従って丸めます。

BigDecimal(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

BigDecimal(String)

の文字列表現を BigDecimalBigDecimal変換します。

BigDecimal(String, MathContext)

の文字列表現 BigDecimal を に BigDecimal変換し、コンストラクターと同じ文字列を #BigDecimal(String) 受け入れ、コンテキスト設定に従って丸めます。

フィールド

RoundCeiling

正の無限大に向かって丸める丸めモード。

RoundDown

丸めモードを 0 に向けて丸めます。

RoundFloor

負の無限大に向かって丸める丸めモード。

RoundHalfDown

両方のネイバーが等しい場合を除き、"最も近い隣人" に向かって丸める丸めモード。その場合は切り捨て。

RoundHalfEven

両方の隣人が等間隔でない限り、"最も近い隣人" に向かって丸める丸めモード。その場合は、偶数の隣人に向かって丸める。

RoundHalfUp

両方のネイバーが等間隔でない限り、"最も近い隣人" に向かって丸める丸めモード。その場合は切り上げます。

RoundUnnecessary

要求された操作に正確な結果があることをアサートする丸めモードであるため、丸め処理は必要ありません。

RoundUp

0 から丸める丸めモード。

プロパティ

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
JniPeerMembers

変更できない、任意の有効桁数の符号付き 10 進数。

One

値 1。小数点以下桁数は 0 です。

PeerReference

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
Ten

スケールが 0 の値 10。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

Zero

スケールが 0 の値 0。

メソッド

Abs()

BigDecimal値がこの の絶対値BigDecimalで、スケールが である this.scale()を返します。

Abs(MathContext)

値がこの のBigDecimal絶対値である をBigDecimal返し、コンテキスト設定に従って丸めます。

Add(BigDecimal)

BigDecimal値が で、スケールmax(this.scale(), augend.scale())(this + augend)である を返します。

Add(BigDecimal, MathContext)

値が の (this + augend)BigDecimal返し、コンテキスト設定に従って丸めます。

ByteValue()

指定した数値の値を として byte返します。

(継承元 Number)
ByteValueExact()

これを BigDecimal に変換し、 byte失われた情報をチェックします。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
CompareTo(BigDecimal)

これを BigDecimal 指定した と比較します BigDecimal

Dispose()

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
Dispose(Boolean)

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
Divide(BigDecimal)

BigDecimal値が で、優先スケール(this.scale() - divisor.scale())(this / divisor)である を返します。正確な商を表すことができない場合は (終端以外の 10 進展開があるため)、 ArithmeticException がスローされます。

Divide(BigDecimal, Int32, RoundingMode)

BigDecimal値が で(this / divisor)、スケールが指定されている を返します。

Divide(BigDecimal, Int32, RoundOptions)

BigDecimal値が で(this / divisor)、スケールが指定されている を返します。

Divide(BigDecimal, MathContext)

値が の (this / divisor)BigDecimal返し、コンテキスト設定に従って丸めます。

Divide(BigDecimal, RoundingMode)

BigDecimal値が で、スケールthis.scale()(this / divisor)である を返します。

Divide(BigDecimal, RoundOptions)

BigDecimal値が で、スケールthis.scale()(this / divisor)である を返します。

DivideAndRemainder(BigDecimal)

の結果と 2 つの BigDecimal オペランドの 結果 divideToIntegralValue を含む 2 要素配列 remainder を返します。

DivideAndRemainder(BigDecimal, MathContext)

コンテキスト設定に従って丸めで計算された 2 つのオペランドに 対する のremainder結果の後に の結果divideToIntegralValueを含む 2 要素BigDecimal配列を返します。

DivideToIntegralValue(BigDecimal)

値が商(this / divisor)BigDecimal整数部分である を切り捨てて返します。

DivideToIntegralValue(BigDecimal, MathContext)

値が の BigDecimal 整数部分 (this / divisor)である を返します。

DoubleValue()

この BigDecimaldoubleに変換します。

Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
FloatValue()

この BigDecimalfloatに変換します。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
IntValue()

これを BigDecimal に変換します int

IntValueExact()

これを BigDecimal に変換し、 int失われた情報をチェックします。

JavaFinalize()

ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
LongValue()

この BigDecimallongに変換します。

LongValueExact()

これを BigDecimal に変換し、 long失われた情報をチェックします。

Max(BigDecimal)

BigDecimalvalの最大値を返します。

Min(BigDecimal)

BigDecimalvalの最小値を返します。

MovePointLeft(Int32)

小数点が BigDecimal 左に移動 n した場合に、この値と等価の を返します。

MovePointRight(Int32)

小数点が BigDecimal 右に移動 n した場合に、この値と等価の を返します。

Multiply(BigDecimal)

BigDecimal値が で、スケール(this.scale() + multiplicand.scale())(this &times; multiplicand)である を返します。

Multiply(BigDecimal, MathContext)

値が の (this &times; multiplicand)BigDecimal返し、コンテキスト設定に従って丸めます。

Negate()

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

Negate(MathContext)

値が の (-this)BigDecimal返し、コンテキスト設定に従って丸めます。

Notify()

このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。

(継承元 Object)
Plus()

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

Plus(MathContext)

値が の (+this)BigDecimal返し、コンテキスト設定に従って丸めます。

Pow(Int32)

値が である (this<sup>n</sup>)BigDecimal返します。累乗は正確に計算され、有効桁数は無制限です。

Pow(Int32, MathContext)

(this<sup>n</sup>)が である をBigDecimal返します。

Precision()

この BigDecimal有効桁数を返します。

Remainder(BigDecimal)

(this % divisor)が である をBigDecimal返します。

Remainder(BigDecimal, MathContext)

値が の (this % divisor)BigDecimal返し、コンテキスト設定に従って丸めます。

Round(MathContext)

設定に BigDecimal 従って丸められた を MathContext 返します。

Scale()

この BigDecimalスケールを返します。

ScaleByPowerOfTen(Int32)

数値が (this * 10<sup>n</sup>) と等しい BigDecimal を返します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetScale(Int32)

BigDecimalスケールが指定された値で、その値がこの BigDecimalの数値と等しい を返します。

SetScale(Int32, RoundingMode)

BigDecimalスケールが指定された値であり、そのスケールされていない値が、その全体の値を維持するために、このBigDecimalスケールされていない値を適切な 10 の累乗で乗算または除算することによって決定される を返します。

SetScale(Int32, RoundOptions)

BigDecimalスケールが指定された値であり、そのスケールされていない値が、その全体の値を維持するために、このBigDecimalスケールされていない値を適切な 10 の累乗で乗算または除算することによって決定される を返します。

ShortValue()

指定した数値の値を として short返します。

(継承元 Number)
ShortValueExact()

これを BigDecimal に変換し、 short失われた情報をチェックします。

Signum()

この BigDecimalの signum 関数を返します。

Sqrt(MathContext)

コンテキスト設定に従って丸めで の this 平方根の近似値を返します。

StripTrailingZeros()

BigDecimalこの 1 と数値が等しいが、後続のゼロが表現から削除された を返します。

Subtract(BigDecimal)

BigDecimal値が で、スケールmax(this.scale(), subtrahend.scale())(this - subtrahend)である を返します。

Subtract(BigDecimal, MathContext)

値が の (this - subtrahend)BigDecimal返し、コンテキスト設定に従って丸めます。

ToArray<T>()

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
ToBigInteger()

この BigDecimalBigIntegerに変換します。

ToBigIntegerExact()

これを BigDecimal に変換し、 BigInteger失われた情報をチェックします。

ToEngineeringString()

指数が必要な場合は、エンジニアリング表記を使用して、この BigDecimalの文字列表現を返します。

ToPlainString()

指数フィールドを使用せずに、この BigDecimal の文字列表現を返します。

ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
Ulp()

この BigDecimalの最後の位置にある単位である ulp のサイズを返します。

UnregisterFromRuntime()

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
UnscaledValue()

BigIntegerBigDecimalがこの のスケーリングされていない値である を返します。

ValueOf(Double)

doubleBigDecimalメソッドによって提供される の正規文字列表現をdouble使用して、 を にDouble#toString(double)変換します。

ValueOf(Int64)

スケールが long 0 の に BigDecimal 値を変換します。

ValueOf(Int64, Int32)

longスケーリングされていない値とスケールを int に変換しますBigDecimal

Wait()

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

IComparable.CompareTo(Object)

変更できない、任意の有効桁数の符号付き 10 進数。

IJavaPeerable.Disposed()

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
IJavaPeerable.Finalized()

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

変更できない、任意の有効桁数の符号付き 10 進数。

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

変更できない、任意の有効桁数の符号付き 10 進数。

GetJniTypeName(IJavaPeerable)

変更できない、任意の有効桁数の符号付き 10 進数。

適用対象