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 進数。 A は BigDecimal
、任意の有効桁数の整数 #unscaledValue() 非スケーリング値 と 32 ビット整数 #scale() スケールで構成されます。 ゼロまたは正の場合、小数点以下桁数は小数点の右側の桁数です。 負の場合、数値のスケーリングされていない値に、スケールの否定の累乗に 10 が乗算されます。 したがって(unscaledValue × 10<sup>-scale</sup>)
、によって表される数値のBigDecimal
値です。
このクラスは BigDecimal
、算術、スケール操作、丸め、比較、ハッシュ、および書式変換の操作を提供します。 このメソッドは#toString
、.BigDecimal
このクラスを使用すると、ユーザーは BigDecimal
丸め動作を完全に制御できます。 丸めモードが指定されておらず、正確な結果を表すことができない場合は、an ArithmeticException
がスローされます。それ以外の場合は、演算に適切な MathContext
オブジェクトを指定することで、選択した精度と丸めモードに計算を実行できます。 いずれの場合も、丸めの制御のために 8 <つの em>丸めモード</em> が提供されます。 このクラスの整数フィールド (たとえば#ROUND_HALF_UP
) を使用して丸めモードを表すのは非推奨です。代わりに 、(などRoundingMode#HALF_UP
) のRoundingMode
enum
列挙値を使用する必要があります。
MathContext
有効桁数が 0 (たとえば) のオブジェクトが指定されている場合、MathContext#UNLIMITED
算術演算は、オブジェクトを受け取たないMathContext
算術メソッドと同様に正確です。 正確な結果を計算する場合、精度を 0 に設定したオブジェクトの MathContext
丸めモード設定は使用されないため、無関係です。 除算の場合、正確な商は無限に長い10進数の拡張を持つことができます。たとえば、1 を 3 で除算します。 商に非終端の 10 進拡張があり、正確な結果を返す演算が指定されている場合は、an 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
、等価性を保持するために、数値と表現の両方が同じである必要があります。 メソッド#scale()
#unscaledValue()
の結果は、表現が異なる数値が等しい場合に異なります。
一般に、丸めモードと有効桁数の設定によって、正確な結果の桁数が返される桁数よりも多い場合 (除算と平方根の場合は無限に多い場合) に、演算によって結果が返される方法が決まります。
最初に、返す合計桁数は 's precision
の設定でMathContext
指定されます。これにより、結果の有効桁数が決まります。 数字の数は、正確な結果の左端の 0 以外の数字から始まります。 丸めモードは、破棄された末尾の数字が返された結果にどのように影響するかを決定します。
すべての算術演算子に対して、操作は、正確な中間結果が最初に計算された後、選択した丸めモードを使用して、精度設定で指定された桁数に丸められた (必要な場合) ように実行されます。 正確な結果が返されない場合、正確な結果の一部の桁位置は破棄されます。 丸めによって返される結果の大きさが大きくなると、先頭の "9" 桁に伝達されるキャリングによって新しい桁の位置が作成される可能性があります。 たとえば、値 999.9 を 3 桁に丸めると、数値は 100> と表される 1,000 に等しくなります。10<sup>1</sup>. このような場合、新しい "1" は返される結果の先頭桁の位置です。
パラメーターを持つ MathContext
メソッドとコンストラクターの場合、結果が正しくありませんが、丸めモードの場合は RoundingMode#UNNECESSARY UNNECESSARY
、an ArithmeticException
がスローされます。
論理的な正確な結果に加えて、各算術演算には、結果を表す適切なスケールがあります。 各操作に推奨されるスケールを次の表に示します。
<table class="striped" style="text-align:left">caption Preferred Scale for Results of Arithmetic Operations </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/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)
は、"a の値は、 ." BigDecimal
の BigDecimal
i
追加 BigDecimal
j
された値の短縮形です。 擬似コード式(i == j)
は、"と同じ値j
BigDecimal
を表す場合BigDecimal
i
にのみ、 "true
の短縮形です。 その他の擬似コード式も同様に解釈されます。 角かっこは、値を定義BigDecimal
する特定BigInteger
のスケール ペアを表すために使用されます。たとえば、[19, 2] はBigDecimal
、小数点以下桁数が 2 の 0.19 に等しい数値です。
このクラスのすべてのメソッドとコンストラクターは、任意の入力パラメーターのオブジェクト参照がnull
渡されたときにスローNullPointerException
されます。
1.1 で追加されました。
の Java ドキュメントjava.math.BigDecimal
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
BigDecimal(BigInteger) |
a を . |
BigDecimal(BigInteger, Int32) |
|
BigDecimal(BigInteger, Int32, MathContext) |
|
BigDecimal(BigInteger, MathContext) |
コンテキスト設定に従って、a |
BigDecimal(Char[]) |
a の文字配列表現 |
BigDecimal(Char[], Int32, Int32) |
サブ配列の指定を許可しながら、a |
BigDecimal(Char[], Int32, Int32, MathContext) |
a の |
BigDecimal(Char[], MathContext) |
a |
BigDecimal(Double) |
' |
BigDecimal(Double, MathContext) |
コンテキストの設定に |
BigDecimal(Int32) |
に |
BigDecimal(Int32, MathContext) |
コンテキスト設定 |
BigDecimal(Int64) |
a を . |
BigDecimal(Int64, MathContext) |
コンテキストの設定に |
BigDecimal(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
BigDecimal(String) |
a |
BigDecimal(String, MathContext) |
コンテキスト設定に従って丸めを行って、a |
フィールド
RoundCeiling |
正の無限大に向かって丸める丸めモード。 |
RoundDown |
0 に向かって丸める丸めモード。 |
RoundFloor |
負の無限大に向かって丸める丸めモード。 |
RoundHalfDown |
両方のネイバーが等しい場合を除き、"最も近い近隣" に向かって丸める丸めモード。その場合は切り捨てられます。 |
RoundHalfEven |
両方のネイバーが等しい場合を除き、"最も近い隣人" に向かって丸める丸めモード。その場合は、偶数の近隣に向かって丸める。 |
RoundHalfUp |
両方のネイバーが等しい場合を除き、"最も近い近隣" に向かって丸める丸めモード。その場合は切り上げ。 |
RoundUnnecessary |
要求された操作に正確な結果があることをアサートする丸めモード。そのため、丸める必要はありません。 |
RoundUp |
0 から丸める丸めモード。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
変更できない、任意の有効桁数の符号付き 10 進数。 (継承元 Object) |
JniPeerMembers |
変更できない、任意の有効桁数の符号付き 10 進数。 |
One |
小数点以下桁数が 0 の値 1。 |
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() |
ulp のサイズ(最後の位置の単位)を返します |
UnregisterFromRuntime() |
変更できない、任意の有効桁数の符号付き 10 進数。 (継承元 Object) |
UnscaledValue() |
この |
ValueOf(Double) |
メソッドによって提供される'の正規文字列表現を |
ValueOf(Int64) |
0 の小数点以下桁数で |
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 進数。 |