BigDecimal 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此 BigDecimal 類別實作了不可變的任意精度十進位數字。
[Android.Runtime.Register("android/icu/math/BigDecimal", ApiSince=24, DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, Java.Lang.IComparable
[<Android.Runtime.Register("android/icu/math/BigDecimal", ApiSince=24, DoNotGenerateAcw=true)>]
type BigDecimal = class
inherit Number
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IComparable
- 繼承
- 屬性
- 實作
備註
此 BigDecimal 類別實作了不可變的任意精度十進位數字。 該 BigDecimal 類別的方法提供固定運算與浮點運算、比較、格式轉換及雜湊運算。
由於數字為十進位,物件實例BigDecimal與其String表示之間有精確對應;類別BigDecimal提供與字String元陣列(char[])物件的直接轉換,以及與 Java 原始型別(可能不完全精確)和 BigInteger之間的轉換。
在本文件中對建構子與方法的描述中,數字物件的值 BigDecimal 會顯示為在物件上呼叫該 toString() 方法的結果。 十進位數的內部表示既不定義也不暴露,且不允許影響任何操作的結果。
此類別所提供的浮點運算由 ANSI X3.274-1996 標準定義,並可於 http://www2.hursley.ibm.com/decimal<br>[此網址將變更]<h3>運算子方法</h3>
數字 BigDecimal 運算由一個 MathContext 物件控制,該物件提供操作的上下文(精度及其他資訊)。 能取 MathContext 參數的方法實作物件的 BigDecimal 標準算術運算子,稱為 運算子方法。 常數MathContext#DEFAULTdigits=9, form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP()提供的預設設定可執行九位數精度的通用浮點運算。 參數 MathContext 不得為 null。
每種運算子方法也都有一個不取 MathContext 參數的版本。 此版本的每種方法所使用的上下文設定為digits=0, form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP;這些設定以無限精度執行不動點運算,與 Java 1.1 與 Java 1.2 原始 BigDecimal 類別所定義。
對於單子運算子,僅存在可選 MathContext 參數;操作作用於當前物件。
對於二元算符, BigDecimal 參數總是存在;但該參數不一定是 null。 此操作以當前物件為左操作元, BigDecimal 參數為右操作元。
例如,加入兩個 BigDecimal 以名稱 award 和 extra 表示的物件,可以寫成以下任一:
award.add(extra) <br>award.add(extra, MathContext.DEFAULT) <br>award.add(extra, acontext)
(其中 acontext 是一個 MathContext 物件),該物件會回傳 BigDecimal 一個物件,其值是根據 award 適當的上下文設定加上 和 extra 的結果。
當使用運算子方法時 BigDecimal ,一組規則定義結果會是什麼(以及透過隱含,結果如何以字串表示)。 這些規則在 BigDecimal 算術文件中定義(見上方網址),總結來說: <ul><li>結果通常以最高有效位數計算。 例如,若 MathContext 運算參數為 , MathContext.DEFAULT 則結果將四捨五入為 9 位數;2 除以 3 則為 0.66666667。
<br> 你可以透過提供合適的 MathContext 物件來改變預設的9位有效位數。 這允許你用需要的數字計算——如果需要,甚至數千位。 不動點(縮放)算術則以 digits 設定為 0(或省略 MathContext 參數)來表示。
<br> 同樣地,你也可以將用於四捨五入的演算法從預設的「經典」演算法更改。
<在> 標準算術中(即 form 設定不 PLAIN為 時),零結果總是以單位數 '0' 表示(即無符號、無小數點或指數部分)。
<除了> 標準算術中的除法與冪運算子外,尾隨零點會被保留(這與二進位浮點運算及大多數電子計算機不同,後者在結果的分數部分會失去尾隨零點的資訊)。
<br> 所以,舉例來說:
new BigDecimal("2.40").add( new BigDecimal("2")) => "4.40" <br>new BigDecimal("2.40").subtract(new BigDecimal("2")) => "0.40" <br>new BigDecimal("2.40").multiply(new BigDecimal("2")) => "4.80" <br>new BigDecimal("2.40").divide( new BigDecimal("2"), def) => "1.2"
其中右側的值 => 為操作結果,表示為 String,且 def (在此及後續範例中)指 MathContext.DEFAULT )。 保留尾隨零對大多數計算(包括財務計算)是理想的。 如有必要,尾隨零點可用除以1輕鬆去除。
<在> 標準算術中,指數形式用於根據結果值及當前設定 digits (預設為 9 位數)來表示結果。 若小數點前所需的位數超過設定, digits 或該數字的絕對值小於 0.000001,則該數字將以指數符號表示;因此
new BigDecimal("1e+6").multiply(new BigDecimal("1e+6"), def)
結果為 1E+12 ,而 1000000000000,且
new BigDecimal("1").divide(new BigDecimal("3E+10"), def)
結果為 , 3.33333333E-11 而非 0.0000000000333333333。
指數符號的形式(科學符號或工程符號)由設定決定 form 。
</ul>
此類別中方法的名稱遵循由 java.lang.Number、 java.math.BigInteger、 以及 java.math.BigDecimal 在 Java 1.1 和 Java 1.2 中所建立的慣例。
Java 文件 android.icu.math.BigDecimal。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| BigDecimal(BigDecimal) |
從 中 |
| BigDecimal(BigInteger, Int32) |
從 和 |
| BigDecimal(BigInteger) |
從一個 |
| BigDecimal(Char[], Int32, Int32) |
|
| BigDecimal(Char[]) |
|
| BigDecimal(Double) |
|
| BigDecimal(Int32) |
|
| BigDecimal(Int64) |
|
| BigDecimal(IntPtr, JniHandleOwnership) |
此 |
| BigDecimal(String) |
從 中 |
欄位
| 名稱 | Description |
|---|---|
| RoundCeiling |
已淘汰.
四捨五入模式,讓數字四捨五入。 |
| RoundDown |
已淘汰.
將四捨五入模式調整至零。 |
| RoundFloor |
已淘汰.
四捨五入模式,將四捨五入到較負的數字。 |
| RoundHalfDown |
已淘汰.
將四捨五入模式取入至最近鄰,並向下取整一個等距值。 |
| RoundHalfEven |
已淘汰.
將四捨五入模式轉為四捨五入至最近鄰,將等距值四捨五入至最近偶鄰。 |
| RoundHalfUp |
已淘汰.
將四捨五入模式取入至最近鄰,並向上取整一個等距值。 |
| RoundUnnecessary |
已淘汰.
四捨五入模式,以宣稱不需要四捨五入。 |
| RoundUp |
已淘汰.
四捨五入模式從零開始四捨五入。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
此 |
| JniPeerMembers |
此 |
| One |
那個 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| Ten |
|
| ThresholdClass |
此 |
| ThresholdType |
此 |
| Zero |
那個 |
方法
| 名稱 | Description |
|---|---|
| Abs() |
回傳一個平素 |
| Abs(MathContext) |
回傳 a |
| Add(BigDecimal, MathContext) |
回傳 一個 |
| Add(BigDecimal) |
回傳一個平素 |
| ByteValue() |
回傳指定數字的值為 |
| ByteValueExact() |
將這個 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| CompareTo(BigDecimal, MathContext) |
將此 |
| CompareTo(BigDecimal) |
用無限的精確度將此 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
此 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
此 |
| Divide(BigDecimal, Int32, RoundOptions) |
回傳一個平文 |
| Divide(BigDecimal, MathContext) |
回傳 一個 |
| Divide(BigDecimal, RoundOptions) |
回傳一個平素 |
| Divide(BigDecimal) |
回傳一個平素 |
| DivideInteger(BigDecimal, MathContext) |
回傳 a |
| DivideInteger(BigDecimal) |
回傳一個平原 |
| DoubleValue() |
將這個 |
| Equals(Object) |
此 |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| FloatValue() |
將這個 |
| Format(Int32, Int32, Int32, Int32, Int32, RoundOptions) |
回傳 |
| Format(Int32, Int32) |
回傳 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| IntValue() |
將此 |
| IntValueExact() |
將此 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| LongValue() |
將這個 |
| LongValueExact() |
將這個 |
| Max(BigDecimal, MathContext) |
回傳 a |
| Max(BigDecimal) |
返回一個平方 |
| Min(BigDecimal, MathContext) |
回傳 |
| Min(BigDecimal) |
返回一個平方 |
| MovePointLeft(Int32) |
回傳一個小數點向左移動了指定位置的平面 |
| MovePointRight(Int32) |
回傳一個小數點向右移動了指定位置的平面 |
| Multiply(BigDecimal, MathContext) |
回傳 一個 |
| Multiply(BigDecimal) |
回傳一個平素 |
| Negate() |
回傳一個平原 |
| Negate(MathContext) |
回傳 一個 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Plus() |
回傳一個平原 |
| Plus(MathContext) |
回傳 一個 |
| Pow(BigDecimal, MathContext) |
回傳 一個 |
| Pow(BigDecimal) |
回傳一個平素 |
| Remainder(BigDecimal, MathContext) |
回傳 a |
| Remainder(BigDecimal) |
回傳一個平方 |
| Scale() |
回傳這個 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
此 |
| SetScale(Int32, RoundOptions) |
回傳一個具有特定刻度的平面。 |
| SetScale(Int32) |
回傳一個具有特定刻度的平面。 |
| ShortValue() |
回傳指定數字的值為 |
| ShortValueExact() |
將這個 |
| Signum() |
回傳此 |
| Subtract(BigDecimal, MathContext) |
回傳 一個 |
| Subtract(BigDecimal) |
回傳一個平素 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToBigDecimal() |
將這個 |
| ToBigInteger() |
將這個 |
| ToBigIntegerExact() |
將這個 |
| ToCharArray() |
會回傳 作為 |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| UnscaledValue() |
移除刻度後會回傳數字為 a |
| ValueOf(Double) |
將 a |
| ValueOf(Int64, Int32) |
用給定的刻度將 a |
| ValueOf(Int64) |
將 a |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IComparable.CompareTo(Object) |
將此物件與指定的物件比較排序。 |
| IJavaPeerable.Disposed() |
此 |
| IJavaPeerable.Finalized() |
此 |
| IJavaPeerable.JniObjectReferenceControlBlock |
此 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此 |
| IJavaPeerable.UnregisterFromRuntime() |
此 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
此 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |