BigDecimal是不可變的、任意精度的、有符號的、十進制數. git
BigDecimal 由任意精度的整數非標度值 和 32 位的整數標度 (scale) 組成 |
BigDecimal 表示的數值是 :
unscaledValue × 10的-scale 次冪
|
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(int val) | int 轉換爲 BigDecimal |
BigDecimal(int val, MathContext mc) | int 轉換爲 BigDecimal 根據上下文設置進行舍入 |
BigDecimal(long val) | long 轉換爲 BigDecimal |
BigDecimal(long val, MathContext mc) | long 轉換爲 BigDecimal 根據上下文設置進行舍入 |
BigDecimal(double val) | double 轉換爲 BigDecimal |
BigDecimal(double val, MathContext mc) | double 轉換爲 BigDecimal 根據上下文設置進行舍入 |
Sign(可選) Significand Exponent opt(可選) |
Sign 符號:
+
-
Significand 有效數字至少要有整數或者小數的一位數字:
IntegerPart .FractionPart 整數和小數
. FractionPart 小數
IntegerPart 整數
IntegerPart:
Digits
FractionPart:
Digits
Exponent: 指數部分
ExponentIndicator SignedInteger
ExponentIndicator: 指數符號
e
E
SignedInteger: 有符號數
Sign(可選的) Digits
Digits:
Digit
Digits Digit
Digit:
Character.isDigit(char) 對其返回 true 的任何字符,如 0、一、2……
|
-1.23E-12 這是一個完整的格式 含有符號 / 含有整數部分 / 含有小數部分 /含有指數部分/指數部分含有符號 |
ROUND_UP
ROUND_DOWN
ROUND_CEILING
ROUND_FLOOR
ROUND_HALF_UP
ROUND_HALF_DOWN
ROUND_HALF_EVEN
ROUND_UNNECESSARY
|
divideToIntegralValue(BigDecimal divisor) | 返回 BigDecimal 值爲向下舍入所得商值 (this / divisor) 的整數部分 首選標度爲 (this.scale() - divisor.scale()) |
divideToIntegralValue(BigDecimal divisor, MathContext mc) | 返回 BigDecimal 其值爲 (this / divisor) 的整數部分 準確商值的整數部分與舍入模式無關 因此舍入模式不影響此方法返回的值 首選標度是 (this.scale() - divisor.scale()) 若是準確商值的整數部分須要的位數多於 mc.precision 則拋出 ArithmeticException |
判斷是否相等
與 compareTo 不一樣
僅當兩個 BigDecimal 對象的值和標度都相等時,此方法才認爲它們相等
(所以經過此方法進行比較時,2.0 不等於 2.00)
|
intValue() 轉換爲 int 丟棄此 BigDecimal 的小數部分 若是生成的 "BigInteger" 太大而不適合用 int 表示,則僅返回 32 位低位字節 此轉換會丟失關於此 BigDecimal 值的總大小和精度的信息 |
longValue()
轉換爲 long
丟棄此 BigDecimal 的小數部分
若是生成的 "BigInteger" 太大
僅返回 64 位低位字節
此轉換會丟失關於此 BigDecimal 值的總大小和精度的信息
|
floatValue() 轉換爲 float 若是BigDecimal 的值太大而不能表示爲 float 將其適當地轉換爲 Float.NEGATIVE_INFINITY 或 Float.POSITIVE_INFINITY 此轉換也可能丟失關於 BigDecimal 值精度的信息 |
doubleValue() 轉換爲 double 若是此 BigDecimal 的數量太大而不能表示爲 double 將其適當地轉換爲 Double.NEGATIVE_INFINITY 或 Double.POSITIVE_INFINITY 轉換也可能丟失關於 BigDecimal 值精度的信息 |
BigInteger toBigInteger() 轉換爲 BigInteger 丟棄此 BigDecimal 的小數部分 此轉換會丟失關於 BigDecimal 值的精度信息 |
int hashCode() |
返回此 BigDecimal 的哈希碼 數值上相等但標度不一樣的兩個 BigDecimal 對象(如,2.0 和 2.00)一般沒有 相同的哈希碼 |
toString() 返回字符串表示形式,若是須要指數,則使用科學記數法
toEngineeringString() 返回字符串表示形式,須要指數時,則使用工程計數法
toPlainString() 返回不帶指數字段的此 BigDecimal 的字符串表示形式
|
toString的三個方法根本邏輯是同樣的,都是轉換爲字符串 只不過具體的形式不一樣 |
movePointLeft 該值的小數點向左移動 n 位 若是 n 爲負數,則該調用等效於 movePointRight(-n) 若是 n 爲非負數,則調用僅將 n 添加到該標度 返回的值和標度分別爲: |
movePointRight 小數點向右移動 n 位 若是 n 爲負,則該調用等效於 movePointLeft(-n) 若是 n 爲非負數,則該調用僅從該標度減去 n 返回的值和標度分別爲: |
BigDecimal stripTrailingZeros() 形式轉換,數值是相等的 轉換爲去掉全部尾部的0的形式的數值 800.000去掉全部的0 就是8 準換後爲8乘以10的平方 |