Share via


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 () 小數位數所組成。 如果為零或正數,小數點右邊的小數字數為位數。 如果為負數,則數位的未調整值乘以十到小數字數負數的乘冪。 因此(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) (第 7.4 節所定義的算術運算模式廣泛相容。 不同於這些標準, BigDecimal 包括許多四捨五入模式。 這些 ANSI 標準與 BigDecimal 規格之間的任何衝突都已解決,以取代 BigDecimal

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

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

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

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

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

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

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

<table class=“striped” style=“text-align:left”標題 Preferred Scales for Arithmetic Operations </標題<> 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>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 四捨五入模式四捨五入為三位數, <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) 傳回 BigDecimal 從操作數建立的 ,方法是移動指定方向的指定距離小數點。

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

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

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

已在1.1中新增。

java.math.BigDecimalJava 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據 中所述的詞彙使用。

建構函式

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)

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

ByteValue()

傳回指定數字的值做為 byte

(繼承來源 Number)
ByteValueExact()

將這個 BigDecimalbyte轉換成 ,檢查遺失的資訊。

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)

傳回其值為 (this / divisor)BigDecimal ,其會根據內容設定四捨五入。

Divide(BigDecimal, RoundingMode)

BigDecimal傳回其值為 (this / divisor)的 ,其小數字數為 this.scale()

Divide(BigDecimal, RoundOptions)

BigDecimal傳回其值為 (this / divisor)的 ,其小數字數為 this.scale()

DivideAndRemainder(BigDecimal)

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

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

將這個 BigDecimalint轉換成 ,檢查遺失的資訊。

JavaFinalize()

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

(繼承來源 Object)
LongValue()

將這個 BigDecimal 轉換成 long

LongValueExact()

將這個 BigDecimallong轉換成 ,檢查遺失的資訊。

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)

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

Negate()

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

Negate(MathContext)

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

Notify()

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

(繼承來源 Object)
NotifyAll()

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

(繼承來源 Object)
Plus()

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

Plus(MathContext)

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

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)

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

Round(MathContext)

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

Scale()

傳回這個BigDecimal刻度

ScaleByPowerOfTen(Int32)

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

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetScale(Int32)

傳回其 BigDecimal 小數字數為指定值,且其值數值等於這個 BigDecimal的 。

SetScale(Int32, RoundingMode)

BigDecimal傳回 ,其小數字數是指定的值,而其未調整值是由乘以或除BigDecimal以 10 的適當乘冪來維持其整體值。

SetScale(Int32, RoundOptions)

BigDecimal傳回 ,其小數字數是指定的值,而其未調整值是由乘以或除BigDecimal以 10 的適當乘冪來維持其整體值。

ShortValue()

傳回指定數字的值做為 short

(繼承來源 Number)
ShortValueExact()

將這個 BigDecimalshort轉換成 ,檢查遺失的資訊。

Signum()

傳回這個 BigDecimal的符號函式。

Sqrt(MathContext)

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

StripTrailingZeros()

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

Subtract(BigDecimal)

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

Subtract(BigDecimal, MathContext)

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

ToArray<T>()

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

(繼承來源 Object)
ToBigInteger()

將這個 BigDecimal 轉換成 BigInteger

ToBigIntegerExact()

將此BigDecimalBigInteger轉換成 ,檢查遺失的資訊。

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)

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

適用於