BigDecimal 方法大全


一.舍入模式的三種定義方式

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_UP

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 不可變對象

為一個不可變對象,他常用的構造方法如下:

  • 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類型數據的相反數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM