java_math_BigDecimal
| ? | ? | |
| ? | ? | |
| ? | ? | |
類 BigDecimal
java.lang.Objectjava.lang.Number
java.math.BigDecimal 所有已實現的接口:
p lic class BigDecimalextends Numberimplements Comparable<BigDecimal>
不可變的、任意精度的有符號十進制數。BigDecimal 由任意精度的整數非標度值 和 32 位的整數標度 (scale) 組成。如果為零或正數,則標度是小數點后的位數。如果為負數,則將該數的非標度值乘以 10 的負 scale 次冪。因此,BigDecimal 表示的數值是 (unscaledVal × 10-scale)。
BigDecimal 類提供以下操作:算術、標度操作、舍入、比較、哈希算法和格式轉換。toString() 方法提供 BigDecimal 的規范表示形式。
BigDecimal 類使用戶能完全控制舍入行為。如果未指定舍入模式,并且無法表示準確結果,則拋出一個異常;否則,通過向該操作提供適當的 MathContext 對象,可以對已選擇的精度和舍入模式執行計算。在任何情況下,可以為舍入控制提供八種舍入模式。使用此類(例如,ROUND_HALF_UP)中的整數字段來表示舍入模式已過時;應改為使用 RoundingMode enum(例如,RoundingMode.HALF_UP)的枚舉值。
當為 MathContext 對象提供 0 的精度設置(例如,MathContext.UNLIMITED)時,算術運算是準確的,它們是不采用任何 MathContext 對象的算術方法。(這是第 5 版之前的版本支持的唯一行為。)為了計算準確結果,不使用附帶 0 精度設置的 MathContext 對象的舍入模式設置,因此與該對象無關。在除法中,準確的商可能是一個無限長的十進制擴展;例如,1 除以 3 所得的商。如果商具有無窮的十進制擴展,但是指定了該操作返回準確結果,則拋出 ArithmeticException。否則,像其他操作那樣,返回除法運算的準確結果。
當精度設置不為 0 時,BigDecimal 算法的規則完全符合 ANSI X3.274-1996 和 ANSI X3.274-1996/AM 1-2000( 7.4 節)中定義的算法的可選操作模式。與上述標準不同,BigDecimal 包括多種舍入模式,它們對于版本 5 以前的 BigDecimal 版本中的除法是強制性的。這些 ANSI 標準和 BigDecimal 規范之間的任何沖突都按照有利于 BigDecimal 的方式進行解決。
由于同一數值可以有不同的表示形式(具有不同的標度),因此運算和舍入的規則必須同時指定數值結果和結果表示形式中所用的標度。
一般情況下,當準確結果(在除法中,可能有無限多位)比返回的數值具有更多位數時,舍入模式和精度設置確定操作如何返回具有有限位數的結果。 首先,MathContext 的 precision 設置指定要返回的總位數;這確定了結果的精度。位數計數從準確結果的最左邊的非零數字開始。舍入模式確定丟棄的尾部位數如何影響返回的結果。
對 于所有算術運算符,運算的執行方式是,首先計算準確的中間結果,然后,使用選擇的舍入模式將其舍入為精度設置(如有必要)指定的位數。如 果不返回準確結果,則將丟棄準確結果的某些數位。當舍入增加了返回結果的大小時,前導數字“9”的進位傳播可能會創建新的數位。例如,將值 999.9 舍入為三位數字,則在數值上等于一千,表示為 100×101。在這種情況下,新的 "1" 是返回結果的前導數位。
除了邏輯的準確結果外,每種算術運算都有一個表示結果的首選標度。下表列出了每個運算的首選標度。
算術運算結果的首選標度| 加 | max(addend.scale(), augend.scale()) |
| 減 | max(min nd.scale(), s trahend.scale()) |
| 乘 | multiplier.scale() + multiplicand.scale() |
| 除 | dividend.scale() - divisor.scale() |
舍入之前,邏輯的準確中間結果的標度是該運算的首選標度。如果用 precision 位數無法表示準確的數值結果,則舍入會選擇要返回的一組數字,并將該結果的標度從中間結果的標度減小到可以表示實際返回的 precision 位數的最小標度。如果準確結果可以使用最多 precision 個數字表示,則返回具有最接近首選標度的標度的結果表示形式。尤其是,通過移除結尾零并減少標度,可以用少于 precision 個數字來表示準確的可表示的商。例如,使用 floor 舍入模式將結果舍入為三個數字,
19/100 = 0.19 // integer=19, scale=2
但是
21/110 = 0.190 // integer=190, scale=3
注意,對于加、減和乘,標度的縮減量將等于丟棄的準確結果的數字位置數。如果舍入導致進位傳播創建一個新的高位,則當未創建新的數位時,會丟棄該結果的附加數字。
其他方法可能與舍入語義稍微不同。例如,使用指定的算法的 pow 方法得到的結果可能偶爾不同于舍入得到的算術結果,如最后一位有多個單位(ulp)。
可以通過兩種類型的操作來處理 BigDecimal 的標度:標度/舍入操作和小數點移動操作。標度/舍入操作(setScale 和 round)返回 BigDecimal,其值近似地(或精確地)等于操作數的值,但是其標度或精度是指定的值;即:它們會增加或減少對其值具有最小影響的存儲數的精度。小數點移動操作(movePointLeft 和 movePointRight)返回從操作數創建的 BigDecimal,創建的方法是按指定方向將小數點移動一個指定距離。
為了簡潔明了起見,整個 BigDecimal 方法的描述中都使用了偽代碼。偽代碼表達式 (i + j) 是“其值為 BigDecimal i 加 BigDecimal j 的 BigDecimal”的簡寫。偽代碼表達式 (i == j) 是“當且僅當 BigDecimal i 表示與 BigDecimal j 相同的值時,則為 tr ”的簡寫。可以類似地解釋其他偽代碼表達式。方括號用于表示特定的 BigInteger 和定義 BigDecimal 值的標度對;例如,[19, 2] 表示 BigDecimal 在數值上等于 0.19,標度是 2。
注:如果 BigDecimal 對象用作 SortedMap 中的鍵或 SortedSet 中的元素,則應特別小心,因為 BigDecimal 的自然排序與 eq ls 方法不一致。有關更多信息,請參見 Comparable、SortedMap 或 SortedSet。
當為任何輸入參數傳遞 null 對象引用時,此類的所有方法和構造方法都將拋出 NullPointerException。
?
?
另請參見:
| static?BigDecimal | ONE ??????????值為 1,標度為 0。 |
| static?int | ROUND_CEILING ??????????接近正無窮大的舍入模式。 |
| static?int | ROUND_DOWN ??????????接近零的舍入模式。 |
| static?int | ROUND_FLOOR ??????????接近負無窮大的舍入模式。 |
| static?int | ROUND_HALF_DOWN ??????????向“最接近的”數字舍入,如果與兩個相鄰數字的距離相等,則為上舍入的舍入模式。 |
| static?int | ROUND_HALF_EVEN ??????????向“最接近的”數字舍入,如果與兩個相鄰數字的距離相等,則向相鄰的偶數舍入。 |
| static?int | ROUND_HALF_UP ??????????向“最接近的”數字舍入,如果與兩個相鄰數字的距離相等,則為向上舍入的舍入模式。 |
| static?int | ROUND_UNNECESSARY ??????????斷言請求的操作具有精確的結果,因此不需要舍入。 |
| static?int | ROUND_UP ??????????舍入遠離零的舍入模式。 |
| static?BigDecimal | TEN ??????????值為 10,標度為 0。 |
| static?BigDecimal | ZERO ??????????值為 0,標度為 0。 |
| BigDecimal(BigInteger?val) ??????????將 BigInteger 轉換為 BigDecimal。 |
| BigDecimal(BigInteger?unscaledVal, int?scale) ??????????將 BigInteger 非標度值和 int 標度轉換為 BigDecimal。 |
| BigDecimal(BigInteger?unscaledVal, int?scale, MathContext?mc) ??????????將 BigInteger 非標度值和 int 標度轉換為 BigDecimal(根據上下文設置進行舍入)。 |
| BigDecimal(BigInteger?val, MathContext?mc) ??????????將 BigInteger 轉換為 BigDecimal(根據上下文設置進行舍入)。 |
| BigDecimal(char[]?in) ??????????將 BigDecimal 的字符數組表示形式轉換為 BigDecimal,接受與 BigDecimal(String) 構造方法相同的字符序列。 |
| BigDecimal(char[]?in, int?offset, int?len) ??????????將 BigDecimal 的字符數組表示形式轉換為 BigDecimal,接受與 BigDecimal(String) 構造方法相同的字符序列,同時允許指定子數組。 |
| BigDecimal(char[]?in, int?offset, int?len, MathContext?mc) ??????????將 BigDecimal 的字符數組表示形式轉換為 BigDecimal,接受與 BigDecimal(String) 構造方法相同的字符序列,同時允許指定子數組,并根據上下文設置進行舍入。 |
| BigDecimal(char[]?in, MathContext?mc) ??????????將 BigDecimal 的字符數組表示形式轉換為 BigDecimal,接受與 BigDecimal(String) 構造方法相同的字符序列(根據上下文設置進行舍入)。 |
| BigDecimal(do le?val) ??????????將 do le 轉換為 BigDecimal,后者是 do le 的二進制浮點值準確的十進制表示形式。 |
| BigDecimal(do le?val, MathContext?mc) ??????????將 do le 轉換為 BigDecimal(根據上下文設置進行舍入)。 |
| BigDecimal(int?val) ??????????將 int 轉換為 BigDecimal。 |
| BigDecimal(int?val, MathContext?mc) ??????????將 int 轉換為 BigDecimal(根據上下文設置進行舍入)。 |
| BigDecimal(long?val) ??????????將 long 轉換為 BigDecimal。 |
| BigDecimal(long?val, MathContext?mc) ??????????將 long 轉換為 BigDecimal(根據上下文設置進行舍入)。 |
| BigDecimal(String?val) ??????????將 BigDecimal 的字符串表示形式轉換為 BigDecimal。 |
| BigDecimal(String?val, MathContext?mc) ??????????將 BigDecimal 的字符串表示形式轉換為 BigDecimal,接受與 BigDecimal(String) 構造方法相同的字符串(按照上下文設置進行舍入)。 |
| ?BigDecimal | abs() ??????????返回 BigDecimal,其值為此 BigDecimal 的絕對值,其標度為 this.scale()。 |
| ?BigDecimal | abs(MathContext?mc) ??????????返回其值為此 BigDecimal 絕對值的 BigDecimal(根據上下文設置進行舍入)。 |
| ?BigDecimal | add(BigDecimal?augend) ??????????返回一個 BigDecimal,其值為 (this + augend),其標度為 max(this.scale(), augend.scale())。 |
| ?BigDecimal | add(BigDecimal?augend, MathContext?mc) ??????????返回其值為 (this + augend) 的 BigDecimal(根據上下文設置進行舍入)。 |
| ?byte | byteVal Exact() ??????????將此 BigDecimal 轉換為 byte,以檢查丟失的信息。 |
| ?int | compareTo(BigDecimal?val) ??????????將此 BigDecimal 與指定的 BigDecimal 比較。 |
| ?BigDecimal | divide(BigDecimal?divisor) ??????????返回一個 BigDecimal,其值為 (this / divisor),其首選標度為 (this.scale() - divisor.scale());如果無法表示準確的商值(因為它有無窮的十進制擴展),則拋出 ArithmeticException。 |
| ?BigDecimal | divide(BigDecimal?divisor, int?roundingMode) ??????????返回一個 BigDecimal,其值為 (this / divisor),其標度為 this.scale()。 |
| ?BigDecimal | divide(BigDecimal?divisor, int?scale, int?roundingMode) ??????????返回一個 BigDecimal,其值為 (this / divisor),其標度為指定標度。 |
| ?BigDecimal | divide(BigDecimal?divisor, int?scale, RoundingMode?roundingMode) ??????????返回一個 BigDecimal,其值為 (this / divisor),其標度為指定標度。 |
| ?BigDecimal | divide(BigDecimal?divisor, MathContext?mc) ??????????返回其值為 (this / divisor) 的 BigDecimal(根據上下文設置進行舍入)。 |
| ?BigDecimal | divide(BigDecimal?divisor, RoundingMode?roundingMode) ??????????返回一個 BigDecimal,其值為 (this / divisor),其標度為 this.scale()。 |
| ?BigDecimal[] | divideAndRemainder(BigDecimal?divisor) ??????????返回由兩個元素組成的 BigDecimal 數組,該數組包含 divideToIntegralVal 的結果,后跟對兩個操作數計算所得到的 remainder。 |
| ?BigDecimal[] | divideAndRemainder(BigDecimal?divisor, MathContext?mc) ??????????返回由兩個元素組成的 BigDecimal 數組,該數組包含 divideToIntegralVal 的結果,后跟根據上下文設置對兩個操作數進行舍入計算所得到的 remainder 的結果。 |
| ?BigDecimal | divideToIntegralVal (BigDecimal?divisor) ??????????返回 BigDecimal,其值為向下舍入所得商值 (this / divisor) 的整數部分。 |
| ?BigDecimal | divideToIntegralVal (BigDecimal?divisor, MathContext?mc) ??????????返回 BigDecimal,其值為 (this / divisor) 的整數部分。 |
| ?do le | do leVal () ??????????將此 BigDecimal 轉換為 do le。 |
| ?boolean | eq ls(Object?x) ??????????比較此 BigDecimal 與指定的 Object 的相等性。 |
| ?float | floatVal () ??????????將此 BigDecimal 轉換為 float。 |
| ?int | hashCode() ??????????返回此 BigDecimal 的哈希碼。 |
| ?int | intVal () ??????????將此 BigDecimal 轉換為 int。 |
| ?int | intVal Exact() ??????????將此 BigDecimal 轉換為 int,以檢查丟失的信息。 |
| ?long | longVal () ??????????將此 BigDecimal 轉換為 long。 |
| ?long | longVal Exact() ??????????將此 BigDecimal 轉換為 long,以檢查丟失的信息。 |
| ?BigDecimal | max(BigDecimal?val) ??????????返回此 BigDecimal 和 val 的最大值。 |
| ?BigDecimal | min(BigDecimal?val) ??????????返回此 BigDecimal 和 val 的最小值。 |
| ?BigDecimal | movePointLeft(int?n) ??????????返回一個 BigDecimal,它等效于將該值的小數點向左移動 n 位。 |
| ?BigDecimal | movePointRight(int?n) ??????????返回一個 BigDecimal,它等效于將該值的小數點向右移動 n 位。 |
| ?BigDecimal | multiply(BigDecimal?multiplicand) ??????????返回一個 BigDecimal,其值為 (this × multiplicand),其標度為 (this.scale() + multiplicand.scale())。 |
| ?BigDecimal | multiply(BigDecimal?multiplicand, MathContext?mc) ??????????返回其值為 (this × multiplicand) 的 BigDecimal(根據上下文設置進行舍入)。 |
| ?BigDecimal | negate() ??????????返回 BigDecimal,其值為 (-this),其標度為 this.scale()。 |
| ?BigDecimal | negate(MathContext?mc) ??????????返回其值為 (-this) 的 BigDecimal(根據上下文設置進行舍入)。 |
| ?BigDecimal | plus() ??????????返回 BigDecimal,其值為 (+this),其標度為 this.scale()。 |
| ?BigDecimal | plus(MathContext?mc) ??????????返回其值為 (+this) 的 BigDecimal(根據上下文設置進行舍入)。 |
| ?BigDecimal | pow(int?n) ??????????返回其值為 (thisn) 的 BigDecimal,準確計算該冪,使其具有無限精度。 |
| ?BigDecimal | pow(int?n, MathContext?mc) ??????????返回其值為 (thisn) 的 BigDecimal。 |
| ?int | precision() ??????????返回此 BigDecimal 的精度。 |
| ?BigDecimal | remainder(BigDecimal?divisor) ??????????返回其值為 (this % divisor) 的 BigDecimal。 |
| ?BigDecimal | remainder(BigDecimal?divisor, MathContext?mc) ??????????返回其值為 (this % divisor) 的 BigDecimal(根據上下文設置進行舍入)。 |
| ?BigDecimal | round(MathContext?mc) ??????????返回根據 MathContext 設置進行舍入后的 BigDecimal。 |
| ?int | scale() ??????????返回此 BigDecimal 的標度。 |
| ?BigDecimal | scaleByPowerOfTen(int?n) ??????????返回其數值等于 (this * 10n) 的 BigDecimal。 |
| ?BigDecimal | setScale(int?newScale) ??????????返回一個 BigDecimal,其標度為指定值,其值在數值上等于此 BigDecimal 的值。 |
| ?BigDecimal | setScale(int?newScale, int?roundingMode) ??????????返回一個 BigDecimal,其標度為指定值,其非標度值通過此 BigDecimal 的非標度值乘以或除以十的適當次冪來確定,以維護其總值。 |
| ?BigDecimal | setScale(int?newScale, RoundingMode?roundingMode) ??????????返回 BigDecimal,其標度為指定值,其非標度值通過此 BigDecimal 的非標度值乘以或除以十的適當次冪來確定,以維護其總值。 |
| ?short | shortVal Exact() ??????????將此 BigDecimal 轉換為 short,以檢查丟失的信息。 |
| ?int | signum() ??????????返回此 BigDecimal 的正負號函數。 |
| ?BigDecimal | stripTrailingZeros() ??????????返回數值上等于此小數,但從該表示形式移除所有尾部零的 BigDecimal。 |
| ?BigDecimal | s tract(BigDecimal?s trahend) ??????????返回一個 BigDecimal,其值為 (this - s trahend),其標度為 max(this.scale(), s trahend.scale())。 |
| ?BigDecimal | s tract(BigDecimal?s trahend, MathContext?mc) ??????????返回其值為 (this - s trahend) 的 BigDecimal(根據上下文設置進行舍入)。 |
| ?BigInteger | toBigInteger() ??????????將此 BigDecimal 轉換為 BigInteger。 |
| ?BigInteger | toBigIntegerExact() ??????????將此 BigDecimal 轉換為 BigInteger,以檢查丟失的信息。 |
| ?String | toEngineeringString() ??????????返回此 BigDecimal 的字符串表示形式,需要指數時,則使用工程計數法。 |
| ?String | toPlainString() ??????????返回不帶指數字段的此 BigDecimal 的字符串表示形式。 |
| ?String | toString() ??????????返回此 BigDecimal 的字符串表示形式,如果需要指數,則使用科學記數法。 |
| ?BigDecimal | ulp() ??????????返回此 BigDecimal 的 ulp(最后一位的單位)的大小。 |
| ?BigInteger | unscaledVal () ??????????返回其值為此 BigDecimal 的非標度值 的 BigInteger。 |
| static?BigDecimal | val Of(do le?val) ??????????使用 Do le.toString(do le) 方法提供的 do le 規范的字符串表示形式將 do le 轉換為 BigDecimal。 |
| static?BigDecimal | val Of(long?val) ??????????將 long 值轉換為具有零標度的 BigDecimal。 |
| static?BigDecimal | val Of(long?unscaledVal, int?scale) ??????????將 long 非標度值和 int 標度轉換為 BigDecimal。 |
| byteVal , shortVal |
| clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
ZERO
p lic static final BigDecimal ZERO?
從以下版本開始:ONE
p lic static final BigDecimal ONE?
從以下版本開始:TEN
p lic static final BigDecimal TEN?
從以下版本開始:ROUND_UP
p lic static final int ROUND_UP?
另請參見:ROUND_DOWN
p lic static final int ROUND_DOWN?
另請參見:ROUND_CEILING
p lic static final int ROUND_CEILING?
另請參見:ROUND_FLOOR
p lic static final int ROUND_FLOOR?
另請參見:ROUND_HALF_UP
p lic static final int ROUND_HALF_UP?
另請參見:ROUND_HALF_DOWN
p lic static final int ROUND_HALF_DOWN?
另請參見:ROUND_HALF_EVEN
p lic static final int ROUND_HALF_EVEN?
另請參見:ROUND_UNNECESSARY
p lic static final int ROUND_UNNECESSARY?
另請參見:BigDecimal
p lic BigDecimal(char[]?in,int?offset,
int?len)
注意,如果字符數組中已經提供字符的序列,則使用此構造方法要比將 char 數組轉換為字符串并使用 BigDecimal(String) 構造方法更快。
?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(char[]?in,int?offset,
int?len,
MathContext?mc)
注意,如果字符數組中已經提供字符的序列,則使用此構造方法要比將 char 數組轉換為字符串并使用 BigDecimal(String) 構造方法更快。
?
參數:BigDecimal
p lic BigDecimal(char[]?in)注意,如果字符序列已經可以作為一個字符數組使用,則使用此構造方法要比將 char 數組轉換為字符串并使用 BigDecimal(String) 構造方法更快。
?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(char[]?in,MathContext?mc)
注意,如果字符序列已經可以作為一個字符數組使用,則使用此構造方法要比將 char 數組轉換為字符串并使用 BigDecimal(String) 構造方法更快。
?
參數:BigDecimal
p lic BigDecimal(String?val)該小數由小數點以及后跟的零或更多十進制數字組成。字符串必須至少包含整數或小數部分中的一個數字。由符號、整數和小數部分組成的數字稱為有效位數。
指數由字符 'e'('\e') 或 'E' ('\E') 以及后跟的一個或多個十進制數字組成。指數的值必須位于 Integer.MAX_VAL (Integer.MIN_VAL +1) 和 Integer.MAX_VAL (包括)之間。
更正式地說,以下語法描述了此構造方法接受的字符串:
BigDecimalString:?
?
?
?
FractionPart:?
Exponent:?
ExponentIndicator:?
?
Digits:?
Digit:返回的 BigDecimal 的標度將是小數部分中的數字位數,如果該字符串不包含小數點,則標度為零,這取決于對指數的調整;如果字符串包含一個指數,則從標度減去該指數。得到的標度值必須位于 Integer.MIN_VAL 和 Integer.MAX_VAL (包括)之間。
Character.digit(char, int) 集提供從字符到數字的映射,以轉換成基數 10。該字符串不能包含任何額外字符(例如,空白)。
示例:
返回的 BigDecimal 的值等于有效位數 × 10?指數。對于左邊的每個字符串,得到的表示形式 [BigInteger, scale] 顯示在右邊。
"0.00" [0,2]
"123" [123,0]
"-123" [-123,0]
"1.23E3" [123,-1]
"1.23E+3" [123,-1]
"12.3E+7" [123,-6]
"12.0" [120,1]
"12.3" [123,1]
"0.00123" [123,5]
"-1.23E-12" [-123,14]
"1234.5E-4" [12345,5]
"0E+7" [0,-7]
"-0" [0,0]
注:對于不是 float、do le NaN 和 ±Infinity 的值,此構造方法與 Float.toString(float) 和 Do le.toString(do le) 返回的值兼容。這通常是將 float 或 do le 轉換為 BigDecimal 的首選方法,因為它不會遇到 BigDecimal(do le) 構造方法的不可預知問題。
?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(String?val,MathContext?mc)
?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(do le?val)注:
?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(do le?val,MathContext?mc)
此構造方法的結果有一定的不可預知性,通常不建議使用它,請參見 BigDecimal(do le) 構造方法下面的注釋。
?
參數:BigDecimal
p lic BigDecimal(BigInteger?val)?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(BigInteger?val,MathContext?mc)
?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(BigInteger?unscaledVal,int?scale)
?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(BigInteger?unscaledVal,int?scale,
MathContext?mc)
?
參數:BigDecimal
p lic BigDecimal(int?val)?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(int?val,MathContext?mc)
?
參數:BigDecimal
p lic BigDecimal(long?val)?
參數:" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
BigDecimal
p lic BigDecimal(long?val,MathContext?mc)
?
參數:val Of
p lic static BigDecimal val Of(long?unscaledVal,int?scale)
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
val Of
p lic static BigDecimal val Of(long?val)?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
val Of
p lic static BigDecimal val Of(do le?val)注:這通常是將 do le(或 float)轉化為 BigDecimal 的首選方法,因為返回的值等于從構造 BigDecimal(使用 Do le.toString(do le) 得到的結果)得到的值。
?
add
p lic BigDecimal add(BigDecimal?augend)?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
add
p lic BigDecimal add(BigDecimal?augend,MathContext?mc)
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
s tract
p lic BigDecimal s tract(BigDecimal?s trahend)?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
s tract
p lic BigDecimal s tract(BigDecimal?s trahend,MathContext?mc)
?
multiply
p lic BigDecimal multiply(BigDecimal?multiplicand)?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
multiply
p lic BigDecimal multiply(BigDecimal?multiplicand,MathContext?mc)
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divide
p lic BigDecimal divide(BigDecimal?divisor,int?scale,
int?roundingMode)
相對于此遺留方法,應優先使用新的 divide(BigDecimal, int, RoundingMode) 方法。
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divide
p lic BigDecimal divide(BigDecimal?divisor,int?scale,
RoundingMode?roundingMode)
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divide
p lic BigDecimal divide(BigDecimal?divisor,int?roundingMode)
相對于此遺留方法,應優先使用新的 divide(BigDecimal, RoundingMode) 方法。
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divide
p lic BigDecimal divide(BigDecimal?divisor,RoundingMode?roundingMode)
?
divide
p lic BigDecimal divide(BigDecimal?divisor)?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divide
p lic BigDecimal divide(BigDecimal?divisor,MathContext?mc)
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divideToIntegralVal
p lic BigDecimal divideToIntegralVal (BigDecimal?divisor)?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divideToIntegralVal
p lic BigDecimal divideToIntegralVal (BigDecimal?divisor,MathContext?mc)
?
remainder
p lic BigDecimal remainder(BigDecimal?divisor)余數由 this.s tract(this.divideToIntegralVal (divisor).multiply(divisor)) 給出。注意,這不是模操作(結果可以為負)。
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
remainder
p lic BigDecimal remainder(BigDecimal?divisor,MathContext?mc)
余數由 this.s tract(this.divideToIntegralVal (divisor, mc).multiply(divisor)) 給出。注意,這不是模操作(結果可以為負)。
?
divideAndRemainder
p lic BigDecimal[] divideAndRemainder(BigDecimal?divisor)注意,如果同時需要整數商和余數,則此方法比分別使用 divideToIntegralVal 和 remainder 方法更快速,因為相除僅需執行一次。
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
divideAndRemainder
p lic BigDecimal[] divideAndRemainder(BigDecimal?divisor,MathContext?mc)
注意,如果同時需要整數商和余數,則此方法比分別使用 divideToIntegralVal 和 remainder 方法更快速,因為相除僅需執行一次。
?
pow
p lic BigDecimal pow(int?n)參數 n 必須在 0 到 999999999(包括)之間。ZERO.pow(0) 返回 ONE。 注意,未來版本可能會擴展此方法允許的指數范圍。
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
pow
p lic BigDecimal pow(int?n,MathContext?mc)
X3.274-1996 算法為:
- 如果出現以下情況,則拋出 ArithmeticException異常
- abs(n) > 999999999
- mc.precision == 0 且 n < 0
- mc.precision > 0 且 n 大于 mc.precision
- 如果 n 為零,則返回 ONE(即使 this為零),否則
- 如果 n 為正數,則通過重復的平方技術將此結果計算到一個累加器中。每個附帶累加器的乘法都使用與 mc 中相同的數學上下文設置,增加到 mc.precision + elength + 1 的精度除外,其中 elength 表示 n 中的十進制數字的個數。
- 如果 n 為負數,則將 n 視為正數計算其結果;然后使用上面指定的工作精度,用一除以此值。
- 然后將正數或負數的最終值舍入為目標精度。
?
abs
p lic BigDecimal abs()?
abs
p lic BigDecimal abs(MathContext?mc)?
negate
p lic BigDecimal negate()?
negate
p lic BigDecimal negate(MathContext?mc)?
plus
p lic BigDecimal plus()此方法僅返回此 BigDecimal,該方法與一元減方法 negate() 對稱。
?
plus
p lic BigDecimal plus(MathContext?mc)此方法的效果與 round(MathContext) 方法的效果相同。
?
signum
p lic int signum()?
scale
p lic int scale()?
precision
p lic int precision()零值的精度是 1。
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
unscaledVal
p lic BigInteger unscaledVal ()?
round
p lic BigDecimal round(MathContext?mc)此方法的效果與 plus(MathContext) 方法的效果相同。
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
setScale
p lic BigDecimal setScale(int?newScale,RoundingMode?roundingMode)
?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
setScale
p lic BigDecimal setScale(int?newScale,int?roundingMode)
注意,由于 BigDecimal 對象是不可變的,此方法的調用不會 導致初始對象被修改,這與使用名為 setX 變異字段 X 方法的常規約定相反。相反,setScale 返回具有適當標度的對象;返回的對象不一定是新分配的。
相對于此遺留方法,應優先使用新的 setScale(int, RoundingMode) 方法。
?
setScale
p lic BigDecimal setScale(int?newScale)此調用通常用于增加標度,在這種情況下,可以保證存在指定標度和正確值的 BigDecimal。如果調用方知道 BigDecimal在其小數部分的結尾有足夠多的零(即其整數值中的十的因子),則該調用也可用于減少標度,以允許重新標度,而不更改其值。
此方法返回與 setScale 的兩個參數版本相同的結果,但是,為調用方省去了指定舍入模式的麻煩(舍入模式不影響結果)。
注意,由于 BigDecimal 對象是不可變的,因此此方法的調用不會 導致初始對象被修改,這與使用名為 setX 變異字段 X 方法的常規約定相反。相反,setScale 返回具有適當標度的對象;返回的對象不一定是新分配的。
?
movePointLeft
p lic BigDecimal movePointLeft(int?n)?
movePointRight
p lic BigDecimal movePointRight(int?n)?
scaleByPowerOfTen
p lic BigDecimal scaleByPowerOfTen(int?n)?
stripTrailingZeros
p lic BigDecimal stripTrailingZeros()?
compareTo
p lic int compareTo(BigDecimal?val)?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
eq ls
p lic boolean eqls(Object?x)
?
min
p lic BigDecimal min(BigDecimal?val)?
max
p lic BigDecimal max(BigDecimal?val)?
hashCode
p lic int hashCode()?
toString
p lic String toString()根據以下步驟可創建 BigDecimal 的標準的規范化字符串形式:首先,使用不帶前導零的字符 '0' 至 '9'(如果其值為零,則使用單個 '0' 字符)將 BigDecimal 的非標度值的絕對值轉換為以十為基數的字符串。
其次,計算調整的指數;這是無效的標度,加上轉換的非標度值中的字符數減 1。即:-scale+(ulength-1),其中 ulength 是十進制數字中非標度值的絕對值的長度(其精度)。
如果該標度大于或等于零,并且調整的指數大于或等于 -6,則在不使用指數記數法的情況下將該數轉換為字符形式。在這種情況下,如果標度為零,則不添加小數點,如果標度為正數,則插入小數點,且標度指定了小數點右邊的字符個數。必要時,將字符 '0' 添加到轉換的非標度值的左邊。如果插入后小數點前面沒有字符,則以傳統字符 '0' 為前綴。
否則(即:如果標度為負數,或者調整的指數小于 -6),使用指數記數法將該數轉換為字符形式。在這種情況下,如果轉換后的 BigInteger 多于一位數,則小數點插入在第一個數字之后。然后,將字符形式的指數作為轉換的非標度值(也許具有插入的小數點)的后綴;這包含字母 'E' 和直接跟在其后的轉換為字符形式的調整指數。后者的基數為十,使用的字符是 '0' 到 '9',沒有前導零,并且,如果調整的指數為負數,則總是以符號字符 '-' ('\-') 為前綴,否則以 '+' ('\+') 為前綴。
最后,如果非標度值小于零,則整個字符串以減號 '-' ('\-') 為前綴。如果非標度值為零或正數,則不使用符號字符作為前綴。
示例:
對于左邊的每個表示形式 [unscaled val , scale],得到的字符串顯示在右邊。
[123,0] "123"[-123,0] "-123"
[123,-1] "1.23E+3"
[123,-3] "1.23E+5"
[123,1] "12.3"
[123,5] "0.00123"
[123,10] "1.23E-8"
[-123,12] "-1.23E-10"
注:
?
toEngineeringString
p lic String toEngineeringString()返回如 toString() 方法中所描述的表示 BigDecimal 的字符串,不包括使用指數記數法的情況,將十的冪調整為三的倍數(工程記數法),這樣,非零值的整數部分的范圍是 1 到 999。如果對零值使用指數記數法,則使用小數點和小數的一(或二)個零數字,以便保留零值的標度。注意,與 toString() 的輸出不同,如果使用 string constr tor 將輸出字符串轉換為 BigDecimal,則此方法的輸出不 保證恢復此 BigDecimal 的相同 [integer, scale] 對。此方法滿足以下較弱約束,即產生的結果在數值上始終等于將字符串構造方法應用到方法的輸出得到的結果。
?
toPlainString
p lic String toPlainString()?
toBigInteger
p lic BigInteger toBigInteger()要在轉換不準確時(即當丟棄非零小數部分時)拋出異常,請使用 toBigIntegerExact() 方法。
?
toBigIntegerExact
p lic BigInteger toBigIntegerExact()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
longVal
p lic long longVal ()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
longVal Exact
p lic long longVal Exact()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
intVal
p lic int intVal ()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
intVal Exact
p lic int intVal Exact()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
shortVal Exact
p lic short shortVal Exact()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
byteVal Exact
p lic byte byteVal Exact()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
floatVal
p lic float floatVal ()?
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif" src_cetemp="/CuteSoft_Client/CuteEditor/Images/anchor.gif">
do leVal
p lic do le do leVal ()?
ulp
p lic BigDecimal ulp()?
| ? | |||||||||
| ? | ? | |||||||||
| ? | ? | |||||||||
轉載于:https://www.cnblogs.com/zjushuiping/archive/2012/05/31/2528201.html
總結
以上是生活随笔為你收集整理的java_math_BigDecimal的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flash的图形分类
- 下一篇: excel2003中如何设置自动保存功能