共用方式為


BigDecimal 類別

定義

不可變的任意有效位數帶正負號的十進位數。

[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
屬性
實作

備註

不可變的任意有效位數帶正負號的十進位數。 BigDecimal由任意有效位數整數 #unscaledValue() 不調整值和 32 位整數 #scale() 小數位數所組成。 如果為零或正數,小數字數是小數點右邊的位數。 如果為負數,則數位的未調整值會乘以 10 到小數位數否定的乘冪。 因此(unscaledValue &times; 10<sup>-scale</sup>),所BigDecimal表示數位的值是 。

類別 BigDecimal 提供算術、小數位數操作、四捨五入、比較、哈希和格式轉換的作業。 方法#toString提供的正式表示。BigDecimal

類別 BigDecimal 可讓使用者完全控制捨入行為。 如果未指定進位模式,而且無法表示確切的結果, ArithmeticException 則會擲回 ;否則,藉由提供適當的 MathContext 物件給作業,即可對所選的有效位數和四捨五入模式執行計算。 不論是哪一種情況,都提供八 <個 em>四捨五入模式</em> ,以控制四捨五入。 使用這個類別中的整數位段來#ROUND_HALF_UP表示四捨五入模式已被取代;應該改用、 (例如RoundingMode#HALF_UP) 的RoundingModeenum列舉值。

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

由於相同的數值可以有不同的表示法(具有不同的小數字數),因此算術和四捨五入的規則必須同時指定數值結果和結果表示法中使用的小數位數。

相同數值的不同表示法稱為相同 世代的成員。 #compareTo(BigDecimal) 的自然順序 BigDecimal 會將相同世代的成員視為彼此相等。 相反地,方法 #equals(Object) equals 需要數值和表示法都相同,才能保留相等。 和 等#scale()#unscaledValue()方法的結果會因數值相等值而有不同的表示法。

一般而言,四捨五入模式和精確度設定會決定當確切結果的位數比傳回數位數多時,作業如何傳回具有有限位數的結果(在除法和平方根的情況下可能無限多)。

首先,要傳回的數字總數是由 MathContext設定 precision 所指定;這會決定結果的有效 位數。 數字計數會從確切結果的最左邊非零位數開始。 四捨五入模式會決定任何捨棄的尾端數位如何影響傳回的結果。

針對所有算術運算符,會執行運算,就像是先計算確切的中繼結果,然後使用選取的四捨五入模式,四捨五入至有效位數設定所指定的數字數。 如果未傳回確切的結果,則會捨棄確切結果的某些數位位置。 四捨五入會增加傳回結果的大小時,新數位位置有可能由傳播到前置 「9」 位數來建立。 例如,將值四捨五入為999.9到三位數四捨五入會等於一千,以100倍表示;10<sup>1</sup>。 在這種情況下,新的 「1」 是傳回結果的前置數位位置。

如果是具有 MathContext 參數的方法和建構函式,如果結果不相交,但四捨五入模式為 RoundingMode#UNNECESSARY UNNECESSARYArithmeticException 則會擲回 。

除了邏輯確切的結果之外,每個算術運算都有代表結果的慣用小數字數。 下表列出每個作業的慣用小數字數。

<table class=“striped” style=“text-align:left”caption Arithmetic Operations <結果的慣用尺規 /caption<>thead><tr><th scope=“col”>Operation</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>><multiplyr.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 四捨五入模式 <,四捨五入為三位數>

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

但<br>

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

請注意,對於加、減和乘,小數位數的縮減將會等於捨棄之確切結果的數位位置數目。 如果四捨五入會導致攜帶傳播建立新的高序數位位置,則會捨棄結果的額外位數,而不是建立任何新數位位置時。

其他方法可能會有稍微不同的四捨五入語意。 例如,使用 #pow(int, MathContext) 指定演算法的方法結果 pow 偶爾可能會因為最後一個位置中的一個以上的單位而與四捨五入的數學結果不同,一個 #ulp() ulp

提供兩種類型的作業來操作 BigDecimal:縮放/四捨五入作業和小數點動作作業。 縮放/四捨五入運算 (#setScale setScale#round round) 傳回 BigDecimal 的值大約等於操作數的 ,但小數字數或有效位數是指定的值;也就是說,它們會增加或減少預存數位的精確度,且其值的影響最小。 小數點動作作業 (#movePointLeft movePointLeft#movePointRight movePointRight) 會傳回 BigDecimal 從操作數建立的 ,方法是將指定方向的指定距離移動小數點。

做為32位整數,小數字數的值集很大,但限定。 如果結果的刻度會超過 32 位整數的範圍,則溢位或下溢,作業可能會擲回 ArithmeticException

為了簡潔明瞭,虛擬程式代碼會在整個方法的描述 BigDecimal 中使用。 虛擬程式代碼表達式是「BigDecimal其值是 BigDecimali 加入至的BigDecimalj縮寫」。(i + j) 虛擬程式代碼表達式(i == j)的縮寫為 「trueif,且只有在 表示與jBigDecimal 相同的值時BigDecimali。 其他虛擬程式代碼表達式會以類似的方式解譯。 方括弧是用來代表定義BigDecimal值的特定BigInteger尺規組;例如 [19, 2] 是BigDecimal數值等於0.19,其小數位數為2。

傳遞任何輸入參數的對象參考時,這個類別的所有方法和建構函式都會擲nullNullPointerException

已在1.1中新增。

java.math.BigDecimalJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

BigDecimal(BigInteger)

BigInteger 轉譯為 BigDecimal

BigDecimal(BigInteger, Int32)

BigInteger 未調整的值與 int 小數字數轉譯成 BigDecimal

BigDecimal(BigInteger, Int32, MathContext)

BigInteger 未調整的值和 int 小數字數轉譯為 BigDecimal,並根據內容設定四捨五入。

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)

double 轉譯為 BigDecimal ,這是 之二進位浮點值的確切十進位表示 double法。

BigDecimal(Double, MathContext)

double 轉譯為 BigDecimal,並根據內容設定四捨五入。

BigDecimal(Int32)

int 轉譯為 BigDecimal

BigDecimal(Int32, MathContext)

int 轉譯為 BigDecimal,並根據內容設定四捨五入。

BigDecimal(Int64)

long 轉譯為 BigDecimal

BigDecimal(Int64, MathContext)

long 轉譯為 BigDecimal,並根據內容設定四捨五入。

BigDecimal(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

BigDecimal(String)

將字 BigDecimal 串表示轉換成 BigDecimal

BigDecimal(String, MathContext)

將的 BigDecimal 字串表示轉譯為 BigDecimal,接受與 #BigDecimal(String) 建構函式相同的字串,並根據內容設定四捨五入。

欄位

RoundCeiling

四捨五入模式,以四捨五入至正無限大。

RoundDown

四捨五入模式,以四捨五入至零。

RoundFloor

四捨五入模式,以四捨五入至負無限大。

RoundHalfDown

四捨五入模式會四捨五入至「最接近的鄰居」,除非兩個鄰居都是等價的,在此情況下會四捨五入。

RoundHalfEven

四捨五入模式會四捨五入至「最接近的鄰居」,除非兩個鄰居相等,在此情況下,會四捨五入至偶鄰。

RoundHalfUp

四捨五入模式會四捨五入至「最接近的鄰居」,除非兩個鄰居相等,在此情況下會四捨五入。

RoundUnnecessary

四捨五入模式可判斷要求作業有確切的結果,因此不需要捨入。

RoundUp

四捨五入模式,以捨棄零。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
JniIdentityHashCode

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
JniPeerMembers

不可變的任意有效位數帶正負號的十進位數。

One

值為 1,小數位數為 0。

PeerReference

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
Ten

值為 10,小數位數為 0。

ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

Zero

值為 0,小數位數為 0。

方法

Abs()

BigDecimal 回 ,其值為這個 BigDecimal的絕對值,而其小數位數為 this.scale()

Abs(MathContext)

BigDecimal 回 ,其值為這個 BigDecimal的絕對值,並根據內容設定四捨五入。

Add(BigDecimal)

BigDecimal 回 ,其值為 (this + augend),而其小數字數為 max(this.scale(), augend.scale())

Add(BigDecimal, MathContext)

BigDecimal 回 ,其值為 (this + augend),並依據內容設定四捨五入。

ByteValue()

傳回指定數字的值做為 byte

(繼承來源 Number)
ByteValueExact()

將這個 BigDecimal 轉換成 byte,檢查是否有遺失的資訊。

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
CompareTo(BigDecimal)

比較這個 BigDecimal 與指定的 BigDecimal

Dispose()

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
Dispose(Boolean)

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
Divide(BigDecimal)

BigDecimal傳回 ,其值為 (this / divisor),且慣用的小數字數為 (this.scale() - divisor.scale()),如果無法表示確切的商數(因為它有非終止的小數展開),ArithmeticException則會擲回 。

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()

DivideAndRemainder(BigDecimal)

傳回兩個項目BigDecimal陣列,其中包含兩個操作數上後面接著 的結果divideToIntegralValueremainder

DivideAndRemainder(BigDecimal, MathContext)

傳回兩個項目 BigDecimal 陣列,其中包含的結果 divideToIntegralValue ,後面接著兩個操作數的結果 remainder ,其結果會根據內容設定,以四捨五入計算。

DivideToIntegralValue(BigDecimal)

BigDecimal 回 ,其值為商數 (this / divisor) 四捨五入的整數部分。

DivideToIntegralValue(BigDecimal, MathContext)

BigDecimal 回 ,其值為 的 (this / divisor)整數部分。

DoubleValue()

將這個 BigDecimal 轉換成 double

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
FloatValue()

將這個 BigDecimal 轉換成 float

GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
IntValue()

轉換這個 BigDecimal 轉換為 int

IntValueExact()

將這個 BigDecimal 轉換為 int,並檢查遺失的資訊。

JavaFinalize()

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
LongValue()

將這個 BigDecimal 轉換成 long

LongValueExact()

將這個 BigDecimal 轉換成 long,檢查是否有遺失的資訊。

Max(BigDecimal)

傳回這個 BigDecimalval的最大值。

Min(BigDecimal)

傳回這個 BigDecimalval的最小值。

MovePointLeft(Int32)

BigDecimal 回 ,與這個相等的 ,其中小數點會移至 n 左邊。

MovePointRight(Int32)

BigDecimal 回 ,與這個相等的 ,其中小數點會移至 n 右邊。

Multiply(BigDecimal)

BigDecimal 回 ,其值為 (this &times; multiplicand),而其小數字數為 (this.scale() + multiplicand.scale())

Multiply(BigDecimal, MathContext)

BigDecimal 回 ,其值為 (this &times; multiplicand),並依據內容設定四捨五入。

Negate()

BigDecimal 回 ,其值為 (-this),而其小數字數為 this.scale()

Negate(MathContext)

BigDecimal 回 ,其值為 (-this),並依據內容設定四捨五入。

Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
Plus()

BigDecimal 回 ,其值為 (+this),而其小數字數為 this.scale()

Plus(MathContext)

BigDecimal 回 ,其值為 (+this),並依據內容設定四捨五入。

Pow(Int32)

BigDecimal 回其值為 的 ,其值為 (this<sup>n</sup>)的 ,其功率會完全計算為無限制的有效位數。

Pow(Int32, MathContext)

BigDecimal 回其值為 (this<sup>n</sup>)的 。

Precision()

回這個BigDecimal的有效位數

Remainder(BigDecimal)

BigDecimal 回其值為 (this % divisor)的 。

Remainder(BigDecimal, MathContext)

BigDecimal 回 ,其值為 (this % divisor),並依據內容設定四捨五入。

Round(MathContext)

根據設定傳 BigDecimal 回四捨五 MathContext 入的 。

Scale()

傳回這個BigDecimal刻度

ScaleByPowerOfTen(Int32)

傳回 BigDecimal,其數值等於 (* 10<sup n</sup>>)。this

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetScale(Int32)

BigDecimal 回 ,其小數字數是指定的值,且其值在數值上等於這個 BigDecimal的值。

SetScale(Int32, RoundingMode)

BigDecimal 回 ,其小數位數是指定的值,而其未調整值是由乘以或除以這個 BigDecimal未調整值的適當乘冪十,以維持其整體值。

SetScale(Int32, RoundOptions)

BigDecimal 回 ,其小數位數是指定的值,而其未調整值是由乘以或除以這個 BigDecimal未調整值的適當乘冪十,以維持其整體值。

ShortValue()

傳回指定數字的值做為 short

(繼承來源 Number)
ShortValueExact()

將這個 BigDecimal 轉換成 short,檢查是否有遺失的資訊。

Signum()

傳回這個 BigDecimal的符號函式。

Sqrt(MathContext)

根據內容設定,傳回 的平方根的 this 近似值,其四捨五入。

StripTrailingZeros()

BigDecimal 回 ,其數值等於這個零,但從表示中移除任何尾端零。

Subtract(BigDecimal)

BigDecimal 回 ,其值為 (this - subtrahend),而其小數字數為 max(this.scale(), subtrahend.scale())

Subtract(BigDecimal, MathContext)

BigDecimal 回 ,其值為 (this - subtrahend),並依據內容設定四捨五入。

ToArray<T>()

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
ToBigInteger()

將這個 BigDecimal 轉換成 BigInteger

ToBigIntegerExact()

將這個 BigDecimal 轉換成 BigInteger,檢查是否有遺失的資訊。

ToEngineeringString()

如果需要指數,請使用工程表示法傳回這個 BigDecimal的字串表示法。

ToPlainString()

傳回這個 BigDecimal 的字串表示,而不使用指數欄位。

ToString()

傳回物件的字串表示。

(繼承來源 Object)
Ulp()

傳回此 BigDecimal的ulp大小,這是最後一個位置的單位。

UnregisterFromRuntime()

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
UnscaledValue()

BigInteger回 ,其值為這個 BigDecimal未調整值

ValueOf(Double)

double使用 double方法所提供的Double#toString(double)標準字串表示,將 轉譯成 BigDecimal

ValueOf(Int64)

long 值轉譯為 BigDecimal 小數位數為零的 。

ValueOf(Int64, Int32)

long 未調整的值與 int 小數字數轉譯成 BigDecimal

Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

明確介面實作

IComparable.CompareTo(Object)

不可變的任意有效位數帶正負號的十進位數。

IJavaPeerable.Disposed()

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
IJavaPeerable.Finalized()

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

不可變的任意有效位數帶正負號的十進位數。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

不可變的任意有效位數帶正負號的十進位數。

GetJniTypeName(IJavaPeerable)

不可變的任意有效位數帶正負號的十進位數。

適用於