BigDecimal クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
変更できない、任意の有効桁数の符号付き 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
- 継承
- 属性
- 実装
注釈
変更できない、任意の有効桁数の符号付き 10 進数。 は BigDecimal
、任意の有効桁数整数 #unscaledValue() 非スケーリング値 と 32 ビット整数 #scale() スケールで構成されます。 ゼロまたは正の場合、小数点以下桁数は小数点の右側の桁数です。 負の場合、数値のスケーリングされていない値に、スケールの否定の累乗に 10 を乗算します。 したがって(unscaledValue × 10<sup>-scale</sup>)
、 で表される数値のBigDecimal
値は です。
クラスは BigDecimal
、算術、スケール操作、丸め、比較、ハッシュ、書式変換の操作を提供します。 メソッドは #toString
、 の正規表現を BigDecimal
提供します。
クラスを使用すると、ユーザーは BigDecimal
丸め動作を完全に制御できます。 丸めモードが指定されておらず、正確な結果を表すことができない場合は、 ArithmeticException
がスローされます。それ以外の場合は、演算に適切な MathContext
オブジェクトを指定することで、選択した精度と丸めモードに計算を実行できます。 いずれの場合も、丸めの制御のために 8 <つの em>丸めモード</em> が提供されます。 丸めモードを表すためにこのクラスの整数フィールド (など #ROUND_HALF_UP
) を使用することは非推奨です。代わりに、 の列挙値 RoundingMode
enum
(など 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 UNNECESSARY
、 ArithmeticException
がスローされます。
論理的な正確な結果に加えて、各算術演算には、結果を表す適切なスケールがあります。 各操作に推奨されるスケールを次の表に示します。
<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/32
は 0.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) によって丸められた数学的結果と異なる場合があります。
のスケールを操作するには、スケーリング/丸め操作と小数点モーション操作の BigDecimal
2 種類の操作が用意されています。 スケーリング/丸め操作 (#setScale setScale
および #round round
) は、値がオペランドの値とほぼ等しい (または正確に) が、スケールまたは有効桁数が指定された値である を返 BigDecimal
します。つまり、格納されている数値の精度は、その値に与える影響を最小限に抑えて増減します。 小数点モーション演算 (#movePointLeft movePointLeft
および ) は、 #movePointRight movePointRight
指定した方向に指定した距離で小数点を移動することによってオペランドから作成された を返 BigDecimal
します。
32 ビットの整数として、スケールの値のセットは大きくなりますが、境界付けされます。 結果のスケールがオーバーフローまたはアンダーフローによって 32 ビット整数の範囲を超える場合、操作によって が ArithmeticException
スローされる可能性があります。
簡潔でわかりやすくするために、擬似コードはメソッドの BigDecimal
説明全体で使用されます。 擬似コード式(i + j)
は、"BigDecimal
の値が のに追加BigDecimal
j
された BigDecimal
i
の値である" の短縮形です。 擬似コード式(i == j)
は、 が と同じ値j
BigDecimal
を表す場合BigDecimal
i
にのみ、 のtrue
短縮形です。 その他の擬似コード式も同様に解釈されます。 角かっこは、値を定義する特定 BigInteger
のとスケールのペアを BigDecimal
表すために使用されます。たとえば、[19, 2] は BigDecimal
2 のスケールを持つ 0.19 に等しい数値です。
このクラスのすべてのメソッドとコンストラクターは、入力パラメーターのオブジェクト参照がnull
渡されたときにスローNullPointerException
されます。
1.1 に追加されました。
の java.math.BigDecimal
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
コンストラクター
BigDecimal(BigInteger) |
を |
BigDecimal(BigInteger, Int32) |
|
BigDecimal(BigInteger, Int32, MathContext) |
|
BigDecimal(BigInteger, MathContext) |
を |
BigDecimal(Char[]) |
の文字配列表現 |
BigDecimal(Char[], Int32, Int32) |
の文字配列表現 |
BigDecimal(Char[], Int32, Int32, MathContext) |
の文字配列表現 |
BigDecimal(Char[], MathContext) |
の文字配列表現 |
BigDecimal(Double) |
を |
BigDecimal(Double, MathContext) |
を |
BigDecimal(Int32) |
を |
BigDecimal(Int32, MathContext) |
を |
BigDecimal(Int64) |
を |
BigDecimal(Int64, MathContext) |
を |
BigDecimal(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
BigDecimal(String) |
の文字列表現を |
BigDecimal(String, MathContext) |
の文字列表現 |
フィールド
RoundCeiling |
正の無限大に向かって丸める丸めモード。 |
RoundDown |
丸めモードを 0 に向けて丸めます。 |
RoundFloor |
負の無限大に向かって丸める丸めモード。 |
RoundHalfDown |
両方のネイバーが等しい場合を除き、"最も近い隣人" に向かって丸める丸めモード。その場合は切り捨て。 |
RoundHalfEven |
両方の隣人が等間隔でない限り、"最も近い隣人" に向かって丸める丸めモード。その場合は、偶数の隣人に向かって丸める。 |
RoundHalfUp |
両方のネイバーが等間隔でない限り、"最も近い隣人" に向かって丸める丸めモード。その場合は切り上げます。 |
RoundUnnecessary |
要求された操作に正確な結果があることをアサートする丸めモードであるため、丸め処理は必要ありません。 |
RoundUp |
0 から丸める丸めモード。 |
プロパティ
Class |
この |
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() |
|
Abs(MathContext) |
値がこの の |
Add(BigDecimal) |
|
Add(BigDecimal, MathContext) |
値が の |
ByteValue() |
指定した数値の値を として |
ByteValueExact() |
これを |
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
CompareTo(BigDecimal) |
これを |
Dispose() |
変更できない、任意の有効桁数の符号付き 10 進数。 (継承元 Object) |
Dispose(Boolean) |
変更できない、任意の有効桁数の符号付き 10 進数。 (継承元 Object) |
Divide(BigDecimal) |
|
Divide(BigDecimal, Int32, RoundingMode) |
|
Divide(BigDecimal, Int32, RoundOptions) |
|
Divide(BigDecimal, MathContext) |
値が の |
Divide(BigDecimal, RoundingMode) |
|
Divide(BigDecimal, RoundOptions) |
|
DivideAndRemainder(BigDecimal) |
の結果と 2 つの |
DivideAndRemainder(BigDecimal, MathContext) |
コンテキスト設定に従って丸めで計算された 2 つのオペランドに 対する の |
DivideToIntegralValue(BigDecimal) |
値が商 |
DivideToIntegralValue(BigDecimal, MathContext) |
値が の |
DoubleValue() |
この |
Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
FloatValue() |
この |
GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
IntValue() |
これを |
IntValueExact() |
これを |
JavaFinalize() |
ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
LongValue() |
この |
LongValueExact() |
これを |
Max(BigDecimal) |
と |
Min(BigDecimal) |
と |
MovePointLeft(Int32) |
小数点が |
MovePointRight(Int32) |
小数点が |
Multiply(BigDecimal) |
|
Multiply(BigDecimal, MathContext) |
値が の |
Negate() |
|
Negate(MathContext) |
値が の |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。 (継承元 Object) |
Plus() |
|
Plus(MathContext) |
値が の |
Pow(Int32) |
値が である |
Pow(Int32, MathContext) |
値 |
Precision() |
この |
Remainder(BigDecimal) |
値 |
Remainder(BigDecimal, MathContext) |
値が の |
Round(MathContext) |
設定に |
Scale() |
この |
ScaleByPowerOfTen(Int32) |
数値が ( |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
SetScale(Int32) |
|
SetScale(Int32, RoundingMode) |
|
SetScale(Int32, RoundOptions) |
|
ShortValue() |
指定した数値の値を として |
ShortValueExact() |
これを |
Signum() |
この |
Sqrt(MathContext) |
コンテキスト設定に従って丸めで の |
StripTrailingZeros() |
|
Subtract(BigDecimal) |
|
Subtract(BigDecimal, MathContext) |
値が の |
ToArray<T>() |
変更できない、任意の有効桁数の符号付き 10 進数。 (継承元 Object) |
ToBigInteger() |
この |
ToBigIntegerExact() |
これを |
ToEngineeringString() |
指数が必要な場合は、エンジニアリング表記を使用して、この |
ToPlainString() |
指数フィールドを使用せずに、この |
ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
Ulp() |
この |
UnregisterFromRuntime() |
変更できない、任意の有効桁数の符号付き 10 進数。 (継承元 Object) |
UnscaledValue() |
|
ValueOf(Double) |
|
ValueOf(Int64) |
スケールが |
ValueOf(Int64, Int32) |
|
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 進数。 |