一.舍入模式的三種定義方式
1.BigDecimal 常量
模式 |
常量名 |
描述 |
向上取整 |
ROUND_DOWN |
直接刪除多餘的小數位 |
向下取整 |
ROUND_UP |
2.35變成2.3 |
四捨五入 |
ROUND_HALF_UP |
2.35變成2.4, 2.34變成2.3 |
五舍六入 |
ROUND_HALF_DOWN |
5也會向下舍 2.35變成2.3 |
接近正無窮大的舍入 |
ROUND_CEILING |
-2.35 變成 -2.3,2.35變成2.4 |
接近負無窮大的舍入 |
ROUND_FLOOR |
-2.35 變成 -2.4, 2.35變成2.3 |
向最接近的數字舍入 |
ROUND_HALF_EVEN |
若是與兩個相鄰數字的距離相等,則向相鄰的偶數舍入 |
計算結果是精確的,不須要舍入模式 |
ROUND_UNNECESSARY |
不捨入,若是結果精確會拋出異常 |
2.RoundingMode 枚舉
其實就是枚舉類裏面封裝了一個常量,引用了上面的枚舉類常量,運用方法:RoundingMode.HALF_UPide
UP(BigDecimal.ROUND_UP),
DOWN(BigDecimal.ROUND_DOWN),
CEILING(BigDecimal.ROUND_CEILING),
FLOOR(BigDecimal.ROUND_FLOOR),
HALF_UP(BigDecimal.ROUND_HALF_UP),
HALF_DOWN(BigDecimal.ROUND_HALF_DOWN),
HALF_EVEN(BigDecimal.ROUND_HALF_EVEN),
UNNECESSARY(BigDecimal.ROUND_UNNECESSARY);
3.MathContext 不可變對象
爲一個不可變對象,他經常使用的構造方法以下:code
- MathContext(int setPrecision) 精度,默認舍入模式爲四捨五入
- MathContext(int setPrecision,RoundingMode setRoundingMode)
精度,舍入模式
二.經常使用運算方法
1.加法 add()
方法 |
參數解釋 |
描述 |
add(BigDecimal augend) |
subtrahend:加數 |
精度取兩個數中精度較大的那個精度 |
add(BigDecimal augend,MathContext mc) |
subtrahend:加數,mc:看上面的MathContext |
|
2.減法 subtract()
方法 |
參數解釋 |
描述 |
subtract(BigDecimal subtrahend) |
subtrahend:減數 |
精度取兩個數中精度較大的那個精度 |
subtract(BigDecimal subtrahend,MathContext mc) |
subtrahend:減數,mc:看上面的MathContext |
|
3.乘法 multiply()
方法 |
參數解釋 |
描述 |
multiply(BigDecimal multiplicand) |
multiplicand:另外一個乘數 |
精度爲兩個乘數的精度相乘 |
multiply(BigDecimal multiplicand, MathContext mc) |
multiplicand:另外一個乘數,mc:看上面的MathContext |
|
4.除法 divide()
方法 |
參數解釋 |
描述 |
divide(BigDecimal divisor) |
divisor:除數 |
不能整除就報錯 |
divide(BigDecimal divisor,int roundingMode) |
divisor:除數,roundingMode:保留小數 |
默認舍入模式爲ROUND_UNNECESSARY |
divide(BigDecimal divisor,int scale,int roundingMode) |
divisor:除數,scale:保留位數,roundingMode:舍入模式 |
|
5.保留幾位小數 setScale()
方法 |
參數解釋 |
setScale(int newScale,int roundingMode) |
第一個參數爲保存的小數位數,第二個參數爲舍入模式 |
setScale(int newScale,RoundingMode roundingMode) |
第一個參數爲保留的小數位數,第二個參數爲舍入模式枚舉類 |
setScale(int newScale) |
第一個參數爲保留的小數位數,默認的舍入模式爲不捨入 |
6.比較大小 compareTo()
方法 |
參數解釋 |
描述 |
compareTo(BigDecimal val) |
val:比較的參數 |
調用方法對象>val 返回 1,調用方法對象 < val 返回 -1,調用方法對象 = val 返回 0 |
三.其餘方法
方法 |
方法用途 |
toString() |
將BigDecimal對象的數值轉換成字符串 |
floatValue |
將BigDecimal對象中的值以單精度數返回 |
longValue() |
將BigDecimal對象中的值以長整數返回 |
intValue() |
將BigDecimal對象中的值以整數返回 |
max(BigDecimal val) |
取兩個數中最大的一個 |
min(BigDecimal val) |
|
remainder(BigDecimal divisor) |
求餘數,求BigDecimal類型數據除以divisor的餘數 |
abs() |
絕對值,求BigDecimal類型數據的絕對值 |
negate() |
相反數,求BigDecimal類型數據的相反數 |