言語

BigDecimal クラス

定義

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

[Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, 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
継承
属性
実装

注釈

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

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

BigDecimal クラスを使用すると、ユーザーは丸め動作を完全に制御できます。 丸めモードが指定されておらず、正確な結果を表すことができない場合は、 ArithmeticException がスローされます。それ以外の場合は、演算に適切な MathContext オブジェクトを指定することで、選択した精度と丸めモードに計算を実行できます。 いずれの場合も、丸めを制御するために 8 <em>rounding モード</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を優先して解決されます。

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

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

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

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

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

MathContext パラメーターを持つメソッドとコンストラクターの場合、結果が正しくありませんが、丸めモードがRoundingMode#UNNECESSARY UNNECESSARY場合、ArithmeticExceptionがスローされます。

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

<table class="striped" style="text-align:left"><caption>算術演算 </caption><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(addend.scale(), 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>

but<br>

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

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

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

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

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

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

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

1.1 で追加されました。

Javaドキュメント。

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

コンストラクター

名前 説明
BigDecimal(BigInteger, Int32, MathContext)

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

BigDecimal(BigInteger, Int32)

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

BigDecimal(BigInteger, MathContext)

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

BigDecimal(BigInteger)

BigIntegerBigDecimalに変換します。

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

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

BigDecimal(Char[], Int32, Int32)

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

BigDecimal(Char[], MathContext)

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

BigDecimal(Char[])

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

BigDecimal(Double, MathContext)

コンテキストの設定に従って丸めを使用して、 doubleBigDecimalに変換します。

BigDecimal(Double)

doubleを、BigDecimalのバイナリ浮動小数点値の正確な 10 進表現であるdoubleに変換します。

BigDecimal(Int32, MathContext)

コンテキストの設定に従って丸めを使用して、 intBigDecimalに変換します。

BigDecimal(Int32)

intBigDecimalに変換します。

BigDecimal(Int64, MathContext)

コンテキストの設定に従って丸めを使用して、 longBigDecimalに変換します。

BigDecimal(Int64)

longBigDecimalに変換します。

BigDecimal(IntPtr, JniHandleOwnership)

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

BigDecimal(String, MathContext)

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

BigDecimal(String)

BigDecimalの文字列形式をBigDecimalに変換します。

フィールド

名前 説明
RoundCeiling

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

RoundDown

0 に向かって丸める丸めモード。

RoundFloor

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

RoundHalfDown

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

RoundHalfEven

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

RoundHalfUp

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

RoundUnnecessary

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

RoundUp

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

プロパティ

名前 説明
Class

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

(継承元 Object)
Handle

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

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

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

(継承元 JavaObject)
JniPeerMembers

この型の JNI ピア メンバーを取得します。

One

小数点以下桁数が 0 の値 1。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
Ten

小数点以下桁数が 0 の値 10。

ThresholdClass

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

ThresholdType

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

Zero

小数点以下桁数が 0 の値 0。

メソッド

名前 説明
Abs()

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

Abs(MathContext)

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

Add(BigDecimal, MathContext)

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

Add(BigDecimal)

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

ByteValue()

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

(継承元 Number)
ByteValueExact()

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

Clone()

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

(継承元 Object)
CompareTo(BigDecimal)

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

Construct(JniObjectReference, JniObjectReferenceOptions)

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

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

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

(継承元 JavaObject)
Divide(BigDecimal, Int32, RoundingMode)

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

Divide(BigDecimal, Int32, RoundOptions)

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

Divide(BigDecimal, MathContext)

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

Divide(BigDecimal, RoundingMode)

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

Divide(BigDecimal, RoundOptions)

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

Divide(BigDecimal)

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

DivideAndRemainder(BigDecimal, MathContext)

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

DivideAndRemainder(BigDecimal)

BigDecimalの結果を含む 2 要素divideToIntegralValue配列を返し、その後に 2 つのオペランドに対するremainderの結果を返します。

DivideToIntegralValue(BigDecimal, MathContext)

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

DivideToIntegralValue(BigDecimal)

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

DoubleValue()

この BigDecimaldoubleに変換します。

Equals(Object)

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

(継承元 JavaObject)
Equals(Object)

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

(継承元 Object)
FloatValue()

この BigDecimalfloatに変換します。

GetHashCode()

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

(継承元 Object)
IntValue()

この BigDecimalintに変換します。

IntValueExact()

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

JavaFinalize()

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

(継承元 Object)
LongValue()

この BigDecimallongに変換します。

LongValueExact()

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

Max(BigDecimal)

この BigDecimalvalの最大値を返します。

Min(BigDecimal)

この BigDecimalvalの最小値を返します。

MovePointLeft(Int32)

小数点が左BigDecimal位置に移動した場合と同じnを返します。

MovePointRight(Int32)

小数点が右BigDecimal位置に移動した場合と同等のnを返します。

Multiply(BigDecimal, MathContext)

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

Multiply(BigDecimal)

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

Negate()

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

Negate(MathContext)

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

Notify()

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

(継承元 Object)
NotifyAll()

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

(継承元 Object)
Plus()

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

Plus(MathContext)

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

Pow(Int32, MathContext)

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

Pow(Int32)

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

Precision()

このBigDecimalを返します。

Remainder(BigDecimal, MathContext)

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

Remainder(BigDecimal)

値がBigDecimal(this % divisor)を返します。

Round(MathContext)

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

Scale()

このBigDecimalを返します。

ScaleByPowerOfTen(Int32)

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

SetHandle(IntPtr, JniHandleOwnership)

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

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

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

(継承元 JavaObject)
SetScale(Int32, RoundingMode)

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

SetScale(Int32, RoundOptions)

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

SetScale(Int32)

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

ShortValue()

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

(継承元 Number)
ShortValueExact()

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

Signum()

この BigDecimalの署名関数を返します。

Sqrt(MathContext)

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

StripTrailingZeros()

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

Subtract(BigDecimal, MathContext)

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

Subtract(BigDecimal)

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

ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToBigInteger()

この BigDecimalBigIntegerに変換します。

ToBigIntegerExact()

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

ToEngineeringString()

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

ToPlainString()

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

ToString()

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

(継承元 Object)
Ulp()

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

UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
UnscaledValue()

このBigIntegerスケーリングされていない値を値とするBigDecimalを返します。

ValueOf(Double)

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

ValueOf(Int64, Int32)

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

ValueOf(Int64)

long値を、小数点以下桁数が 0 のBigDecimalに変換します。

Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

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

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

(継承元 Object)
Wait(Int64)

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

(継承元 Object)

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

名前 説明
IComparable.CompareTo(Object)

この値を指定したオブジェクトと比較します。

IJavaPeerable.Disposed()

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

(継承元 JavaObject)
IJavaPeerable.Finalized()

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

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

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

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

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

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

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

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

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

(継承元 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

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

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象