好程式設計師Java培訓分享BigDecimal的用法
好程式設計師Java 培訓分享 BigDecimal 的用法, 如果對數值結果精度要求很高,那麼就可以使用BigDecimal , BigDecimal 可以精準的控制小數點後面的數字
1. 例項 BigDecimal 物件
通常會使用 String 和 int 構造方法例項出 BigDecimal 物件,即
new BigDecimal(String val);
new BigDecimal(int val);
如引數為 double 型別,得先轉換成 String 型別再入參
new BigDecimal(Double.toString(123.123));
2. BigDecimal 加減乘除
加減乘除都是用 BigDecimal 物件點 (.) 加減乘除方法入參 BigDecimal 物件,返回的也是 BigDecimal 物件
加:BigDecimal add = new BigDecimal("123.123").add(new BigDecimal("123.123")); ---> 246.246
減:BigDecimal subtract = new BigDecimal("123.123").subtract(new BigDecimal("123.123")); ---> 0.000
乘:BigDecimal multiply = new BigDecimal("123.123").multiply(new BigDecimal("123.123")); ---> 15159.273129
除:BigDecimal divide = new BigDecimal("123.123").divide(new BigDecimal("123.123")); ---> 1
注:其中除法一般不會這樣直接除,在不能整除的情況下,這樣執行程式是會報錯的,所以一般除法會使用下面這個過載方法
new BigDecimal("10").divide("40",1,ROUND_HALF_UP); ---> 0.3
正常計算 10/40 結果為 0.25 , 在這裡是計算 十除以四十,保留一位小數,四捨五入模式。所以得到的結果為 0.3
最常用的模式:
① ROUND_HALF_UP :四捨五入
② ROUND_HALF_DOWN :向下取捨 ( 去掉保留小數位後面的小數 )
3. Scale 屬性操作
① 獲取小數的位數: new BigDecimal("123.123").scale() ---> 3
② setScale() 方法保留幾位小數
- setScale(int NewScale) : ( 注:入參的數字只能大於等於小數的位數,括號中只能入參大於等於 3 的數 )
例: new BigDecimal("123.123").setScale(3) ---> 123.123
new BigDecimal("123.123").setScale(5) ---> 123.12300
- setScale(int newScale, RoundingMode roundingMode) :
例:new BigDecimal("123.123").setScale(2,RoundingMode.HALF_UP) ---> 123.12
new BigDecimal("123.125").setScale(2,RoundingMode.HALF_UP) ---> 123.13
new BigDecimal("123.123").setScale(2,RoundingMode.HALF_DOWN) ---> 123.12
new BigDecimal("123.125").setScale(2,RoundingMode.HALF_DOWN) ---> 123.12
4. compareTo 比較大小
等於:new BigDecimal("123.123").compareTo(new BigDecimal("123.123"))==0 ---> true
new BigDecimal("123.123").compareTo(new BigDecimal("123.123")) ---> 0
如果 compareTo 的結果為 0 的話,就證明兩個物件相等 ( 當左邊不等於右邊時,第一個表示式則為 false)
小於:new BigDecimal("123.122").compareTo(new BigDecimal("123.123")) < 0 ---> true
new BigDecimal("123.122").compareTo(new BigDecimal("123.123")) ---> -1
如果 compareTo 的結果為 -1 的話,就證明左邊小於右邊 ( 當左邊大於等於右邊時,第一個表示式則為 false)
大於:new BigDecimal("123.124").compareTo(new BigDecimal("123.123")) > 0 ---> true
new BigDecimal("123.124").compareTo(new BigDecimal("123.123")) ---> 1
如果 compareTo 的結果為 1 的話,就證明左邊大於右邊 ( 當左邊小於等於右邊時,第一個表示式則為 false)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2708094/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java培訓分享Spring Ioc的原理程式設計師JavaSpring
- 好程式設計師ava培訓分享void的用法和意義程式設計師
- 好程式設計師Java培訓分享maven-概述程式設計師JavaMaven
- 好程式設計師Python培訓分享For迴圈用法詳解程式設計師Python
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java培訓分享Java和HTML的區別?程式設計師JavaHTML
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 好程式設計師Java培訓分享如何快速入門Java程式設計師Java
- 好程式設計師Java培訓分享Java包是什麼?程式設計師Java
- 好程式設計師Java培訓分享Java多執行緒程式設計師Java執行緒
- 好程式設計師Java培訓分享Java EE與Java的區別程式設計師Java
- 好程式設計師Java培訓分享本地快取如何設計程式設計師Java快取
- 好程式設計師Java培訓分享SpringBoot -啟動流程程式設計師JavaSpring Boot
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Java培訓分享SpringBoot入門篇程式設計師JavaSpring Boot
- 好程式設計師Java培訓分享學Java程式設計要注意什麼程式設計師Java
- 好程式設計師Java培訓分享面試Java的注意事項程式設計師Java面試
- 好程式設計師Java培訓分享Java集合的兩種排序方法程式設計師Java排序
- 好程式設計師Java培訓分享Java物件導向概念解析程式設計師Java物件
- 好程式設計師Java培訓分享Java初學者必讀程式設計師Java
- 好程式設計師Java培訓分享int和Integer的區別程式設計師Java
- 好程式設計師Java培訓分享treeset和hashset的區別程式設計師Java
- 好程式設計師Java培訓分享MySQL算術運算子程式設計師JavaMySql
- 好程式設計師Java培訓分享SpringBoot -自動配置原理程式設計師JavaSpring Boot
- 好程式設計師Java培訓分享Mybatis面試題集合程式設計師JavaMyBatis面試題
- 好程式設計師Java培訓分享Java類載入的過程概述程式設計師Java
- 好程式設計師Java培訓分享Java的三大框架怎麼學?程式設計師Java框架
- 好程式設計師Java培訓分享Java面試題集合篇一程式設計師Java面試題
- 好程式設計師Java培訓分享Java面試題集合篇二程式設計師Java面試題
- 好程式設計師Java培訓分享學習Java需要哪些基礎程式設計師Java
- 好程式設計師Java培訓分享Java中級面試題合集程式設計師Java面試題
- 好程式設計師Java培訓分享Java讀寫Properties配置檔案程式設計師Java
- 好程式設計師Java培訓分享學Java需要什麼基礎?程式設計師Java