語言

BigDecimal 類別

定義

不變、任意精確的帶號十進位數。

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

備註

不變、任意精確的帶號十進位數。 A BigDecimal 由任意精度整數 #unscaledValue() 未調整的值 與一個 32 位元整數 #scale() 刻度組成。 如果是零或正,刻度是小數點右側的數字數。 若為負,則該數值未調整的值乘以十乘以刻度否定的冪次方。 因此BigDecimal,由 所(unscaledValue &times; 10<sup>-scale</sup>)代表的數字值為 。

BigDecimal 類別提供算術運算、尺度操作、四捨五入、比較、雜湊及格式轉換等操作。 此 #toString 方法提供了 的典範表示 BigDecimal

這個 BigDecimal 類別讓使用者完全控制四捨五入的行為。 若未指定捨入模式且無法精確表示結果,則拋出 a ArithmeticException ;否則,可透過提供適當的 MathContext 物件來執行計算,以選擇的精度與捨入模式進行計算。 無論哪種情況,都提供八<種 em>四捨五入模式<>來控制四捨五入。 使用此類整數域(例如 #ROUND_HALF_UP)來表示捨棄模式;應改用 的列舉值 RoundingModeenum(如 RoundingMode#HALF_UP)。

MathContext 物件被提供精確度為 0(例如, MathContext#UNLIMITED),算術運算是精確的,而不取 MathContext 物件的算術方法也是如此。 作為計算精確結果的推論,物體的四捨五入模式 MathContext 設定為0時不被使用,因此無關緊要。 在除法的情況下,正商可以有無限長的十進位展開;例如,1除以3。 若商展開為非終止十進位展開,且操作指定為返回精確結果,則拋出 a ArithmeticException 。 否則,除法的精確結果會回傳,與其他操作相同。

當精度設定非 0 時,算術規則 BigDecimal 大致與 ANSI X3.274-1996 及 ANSI X3.274-1996/AM 1-2000(第 7.4 節)中定義的部分運算模式相容。 與這些標準不同,這裡 BigDecimal 包含許多四捨五入模式。 這些 ANSI 標準與 BigDecimal 規範之間的衝突,將以 為 為優先 BigDecimal權解決。

由於同一數值可能有不同的表示法(不同的刻度),算術和四捨五入的規則必須同時指定數值結果與結果表示所用的刻度。

相同數值的不同表示稱為同一 體的成員。 #compareTo(大十進制)自然序 BigDecimal 認為同一群體的成員彼此相等。 相較之下,該 #equals(Object) equals 方法要求數值與表示方式相同,方能成立等號。 像 和 #scale() 這類方法#unscaledValue()的結果,對於數值相等但表示方式不同時會有所不同。

一般而言,捨入模式與精度設定決定了當精確結果的位數數(除法和平方根時可能是無限多)時,運算如何回傳有限位數的結果。

首先,回傳的總數字數由 的MathContext設定決定precision;這決定了結果的精確度。 數字計數從精確結果最左邊的非零數字開始。 四捨五入模式決定了任何被捨棄的尾位數字對回傳結果的影響。

對於所有算術運算子,操作方式就像先計算出精確中間結果,然後用選定的四捨五入模式(如有需要)將位數四捨五入到精度設定指定的位數。 若未返回精確結果,則會捨棄該精確結果的部分位位。 當四捨五入增加回傳結果的大小時,進位可能透過進位傳播到前方的「9」位,產生新的數字位置。 例如,將數值 999.9 四捨五入為三位數,向上取整後數值為一千,表示為 100& 倍;10<sup>1</sup>。 在這種情況下,新的「1」是回傳結果的首位數字位置。

對於參數為MathContext的方法與構造子,若結果不精確但四捨五入模式為 RoundingMode#UNNECESSARY UNNECESSARY,則會拋出 。ArithmeticException

除了邏輯上的精確結果外,每個算術運算還有一個偏好的刻度來表示結果。 每種操作的首選比例列於下表。

<table class=“striped” style=“text-align:left”>caption<算術運算>結果的偏好刻度 /caption<>thead<>tr<th scope=“col”><運算>/th<scope =“col”>< 結果的首選刻度>/th</tr><>/tbody<>tbody<>tr<scope = “row”>< Add>/th<td><max(addend.scale(), augend.scale())/>td<>tr<th scope = “row”>< 減法>/th td<max(minuend.scale(), subtrahend.scale()/><td><tr>th scope=“row”< 乘法></th>td<multiplier.scale() + multiplicand.scale()/><td><tr>th scope=“row”< 除法></th>td<dividend.scale() - 除數.scale()></td><tr>th scope=“row”<平方根></th>td<radicand.scale()/2></td></tbody></table><>

這些刻度是回傳精確算術結果的方法所使用的刻度;但精確除法可能必須使用較大的刻度,因為精確結果可能有更多位數。 例如,1/320.03125

在四捨五入之前,邏輯精確中間結果的尺度是該運算的首選尺度。 若無法以數字表示 precision 精確的數字結果,四捨五入選擇要回傳的數字集合,並將結果的比例從中間結果的比例縮小到能代表實際回傳數字 precision 的最小比例。 如果精確結果最多只能用 precision 位數表示,則回傳最接近偏好刻度的結果表示。 特別地,精確可表示的商數可以透過去除尾隨零並減少刻度來用少 precision 於數字表示。 例如,使用 RoundingMode#FLOOR floor rounding mode( <br)將四捨五入為三位數>

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和 )會將小數點沿指定方向移動指定距離,從操作數返回 a BigDecimal

作為 32 位元整數,刻度的值集合很大,但有界。 若結果的尺度超過32位元整數的範圍,無論是溢位或下溢,操作可能會拋出 ArithmeticException

為了簡潔與清晰,方法描述中多使用 BigDecimal 偽代碼。 偽代碼表達(i + j)式是「BigDecimal一個值與BigDecimali相加於 的 BigDecimalj的」的簡稱。 偽碼表達 (i == j) 式是「true 當且僅當 代表 BigDecimali 與 相同的值 BigDecimalj」的簡稱。 其他偽代碼表達式也有類似的解讀方式。 方括號用來表示 BigInteger 定義某個 BigDecimal 值的特定與刻度對;例如,[19, 2] 是 BigDecimal 數值上等於 0.19,且刻度為 2。

此類別的所有方法與建構子在傳遞NullPointerException物件參考時都會拋出null

在 1.1 版本中加入。

java.math.BigDecimalJava 檔。

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

建構函式

名稱 Description
BigDecimal(BigInteger, Int32, MathContext)

BigInteger 未調整的值與刻 intBigDecimal轉換為 ,並依上下文設定四捨五入。

BigDecimal(BigInteger, Int32)

BigInteger 未調整的值和一個 int 刻度轉換成 BigDecimal

BigDecimal(BigInteger, MathContext)

根據上下文設定,將 a BigInteger 轉換成 BigDecimal 四捨五入。

BigDecimal(BigInteger)

將 a BigInteger 轉換成 BigDecimal

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

將 的BigDecimalBigDecimal字元陣列表示轉換為接受與#BigDecimal(String)建構子相同的字元序列,同時允許指定子陣列,並依上下文設定進行四捨五入。

BigDecimal(Char[], Int32, Int32)

將 的BigDecimalBigDecimal字元陣列表示轉換為 ,接受與#BigDecimal(String)建構子相同的字元序列,同時允許指定子陣列。

BigDecimal(Char[], MathContext)

將 的BigDecimalBigDecimal字元陣列表示轉換為 ,接受與#BigDecimal(String)建構子相同的字元序列,並依上下文設定進行捨入。

BigDecimal(Char[])

將 的BigDecimalBigDecimal字元陣列表示轉換為接受與建構子相同字元#BigDecimal(String)序列的 。

BigDecimal(Double, MathContext)

將 a double 轉換為 BigDecimal,並依上下文設定四捨五入。

BigDecimal(Double)

將 a double 轉換為 , BigDecimal 即 的二進位浮點數值的精確十進位表示 double

BigDecimal(Int32, MathContext)

將 轉換為 intBigDecimal,並依上下文設定四捨五入。

BigDecimal(Int32)

將 a int 轉換成 BigDecimal

BigDecimal(Int64, MathContext)

將 a long 轉換為 BigDecimal,並依上下文設定四捨五入。

BigDecimal(Int64)

將 a long 轉換成 BigDecimal

BigDecimal(IntPtr, JniHandleOwnership)

用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。

BigDecimal(String, MathContext)

將 的BigDecimalBigDecimal字串表示轉換為 ,接受與#BigDecimal(String)建構子相同的字串,並依上下文設定四捨五入。

BigDecimal(String)

將 的BigDecimalBigDecimal字串表示轉換為 。

欄位

名稱 Description
RoundCeiling

將四捨五入模式轉為向正無限大四捨五入。

RoundDown

將四捨五入模式調整至零。

RoundFloor

將四捨五入模式轉為向負無限大四捨五入。

RoundHalfDown

將四捨五入模式移至「最近鄰」,除非兩個鄰居距離相等,此時取整。

RoundHalfEven

將捨入模式將四捨五入至「最近鄰」,除非兩個鄰居距離相等,此時則向偶鄰取整。

RoundHalfUp

將四捨五入模式取入到「最近鄰」,除非兩個鄰居距離相等,此時取整。

RoundUnnecessary

捨入模式以斷言所請求的運算結果精確,因此不需要四捨五入。

RoundUp

四捨五入模式從零開始四捨五入。

屬性

名稱 Description
Class

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

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

不變、任意精確的帶號十進位數。

(繼承來源 JavaObject)
JniPeerMembers

這類人能獲得JNI同儕會員。

One

值為 1,刻度為 0。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
Ten

值為 10,刻度為 0。

ThresholdClass

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

ThresholdType

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

Zero

值為0,刻度為0。

方法

名稱 Description
Abs()

回傳 BigDecimal 一個,其值為此 BigDecimal的絕對值,且其尺度為 this.scale()

Abs(MathContext)

回傳 a BigDecimal ,其值為該 BigDecimal的絕對值,並依上下文設定四捨五入。

Add(BigDecimal, MathContext)

回傳 BigDecimal 一個值為 (this + augend),並依上下文設定四捨五入。

Add(BigDecimal)

回傳 BigDecimal 一個值為 (this + augend),其尺度為 max(this.scale(), augend.scale())

ByteValue()

回傳指定數字的值為 byte

(繼承來源 Number)
ByteValueExact()

將此 BigDecimal 轉換成 byte,檢查遺失資訊。

Clone()

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

(繼承來源 Object)
CompareTo(BigDecimal)

將此 BigDecimal 與指定的 BigDecimal比較。

Construct(JniObjectReference, JniObjectReferenceOptions)

不變、任意精確的帶號十進位數。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

不變、任意精確的帶號十進位數。

(繼承來源 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 a,其值為 (this / divisor),且其偏好的尺度為 (this.scale() - divisor.scale());若無法表示精確商(因其具有非終結的十進位展開),則拋出 。ArithmeticException

DivideAndRemainder(BigDecimal, MathContext)

回傳一個兩元素 BigDecimal 陣列,包含 的 divideToIntegralValue 結果,接著是根據上下文設定以四捨五入計算的兩個運算元的結果 remainder

DivideAndRemainder(BigDecimal)

回傳一個包含 的BigDecimal結果的兩元素divideToIntegralValue陣列,接著是兩個運算元上的結果remainder

DivideToIntegralValue(BigDecimal, MathContext)

回傳 a BigDecimal 的值為 的 (this / divisor)整數部分。

DivideToIntegralValue(BigDecimal)

回傳 a BigDecimal 的值為商數 (this / divisor) 的整數部分向下取整。

DoubleValue()

將這個 BigDecimal 轉換成 double

Equals(Object)

不變、任意精確的帶號十進位數。

(繼承來源 JavaObject)
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)

回傳 a BigDecimal ,與此 a 等價,但小數點向左移動 n

MovePointRight(Int32)

回傳 a 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()

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

(繼承來源 Object)
NotifyAll()

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

(繼承來源 Object)
Plus()

回傳 BigDecimal 一個值為 (+this),其尺度為 this.scale()

Plus(MathContext)

回傳 BigDecimal 一個值為 (+this),並依上下文設定四捨五入。

Pow(Int32, MathContext)

回傳 一個 BigDecimal ,其值為 (this<sup>n</sup>)

Pow(Int32)

回傳 BigDecimal a,其值為 (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)

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

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

不變、任意精確的帶號十進位數。

(繼承來源 JavaObject)
SetScale(Int32, RoundingMode)

回傳 a BigDecimal ,其尺度為指定值,且其未調整值是透過乘以或除 BigDecimal以適當的十的冪方來決定,以維持其整體值。

SetScale(Int32, RoundOptions)

回傳 a BigDecimal ,其尺度為指定值,且其未調整值是透過乘以或除 BigDecimal以適當的十的冪方來決定,以維持其整體值。

SetScale(Int32)

回傳 A BigDecimal ,其尺度為指定值,且數值等於此 BigDecimal值。

ShortValue()

回傳指定數字的值為 short

(繼承來源 Number)
ShortValueExact()

將此 BigDecimal 轉換成 short,檢查遺失資訊。

Signum()

回傳此函 BigDecimal數的符號函數。

Sqrt(MathContext)

回傳一個近似到平方根 this 的近似值,並依上下文設定四捨五入。

StripTrailingZeros()

回傳 a BigDecimal ,數值上等於此 a,但將後尾零從表示中移除。

Subtract(BigDecimal, MathContext)

回傳 BigDecimal 一個值為 (this - subtrahend),並依上下文設定四捨五入。

Subtract(BigDecimal)

回傳 BigDecimal 一個值為 (this - subtrahend),其尺度為 max(this.scale(), subtrahend.scale())

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToBigInteger()

將這個 BigDecimal 轉換成 BigInteger

ToBigIntegerExact()

將此 BigDecimal 轉換成 BigInteger,檢查遺失資訊。

ToEngineeringString()

若需要指數,則回傳此符號 BigDecimal的字串表示,使用工程符號。

ToPlainString()

回傳一個無指數域的字串表示 BigDecimal

ToString()

傳回物件的字串表示。

(繼承來源 Object)
Ulp()

回傳 ULP 大小,即 在最後一個單位。BigDecimal

UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
UnscaledValue()

回傳 的 aBigInteger,其值為該 BigDecimal

ValueOf(Double)

利用double該方法提供的BigDecimal典範字串表示,將 a double 轉換為 Double#toString(double)

ValueOf(Int64, Int32)

long 未調整的值和一個 int 刻度轉換成 BigDecimal

ValueOf(Int64)

將一個 long 值轉換成 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)

明確介面實作

名稱 Description
IComparable.CompareTo(Object)

將此值與指定物件比較。

IJavaPeerable.Disposed()

不變、任意精確的帶號十進位數。

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

不變、任意精確的帶號十進位數。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

不變、任意精確的帶號十進位數。

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

不變、任意精確的帶號十進位數。

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

不變、任意精確的帶號十進位數。

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

不變、任意精確的帶號十進位數。

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

不變、任意精確的帶號十進位數。

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

不變、任意精確的帶號十進位數。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於