Java BigDecimal使用方法詳解
重要屬性
1、scale: 小數(shù)點后的位數(shù)。如將1.234構建為BigDecimal,scale屬性則為3
2、RoundingMode(對照數(shù)軸上正負數(shù)、0的位置分布):
小數(shù)的保留模式。在計算除法時,當商的小數(shù)位過多,想保留指定的位數(shù)時使用?;蛘呱虨闊o限循環(huán)小數(shù)時,若不指定RoundingMode則會發(fā)生異常。
- UP: 正數(shù)向右增長,負數(shù)向左增長
- DOWN: 正數(shù)向左增長,負數(shù)向右增長 (理解為直接忽略其余小數(shù)位)
- CEILING: 正負數(shù)全部向右增長
- FLOOR: 正負數(shù)全部向左增長
- HALF_UP: 四舍五入
- HALF_DOWN: 四舍六入
- HALF_EVEN: 四舍五入,當為5時,判斷前一位的奇偶性。奇數(shù)進位,偶數(shù)不進位
3、例子
BigDecimal bigDecimal = new BigDecimal("1.555"); bigDecimal = bigDecimal.setScale(2, RoundingMode.HALF_UP); System.out.println(bigDecimal); // 1.56
Double 轉(zhuǎn) BigDecimal
- 最好將一個字符串作為構造參數(shù),這樣創(chuàng)建的BigDecimal是可預知、準確的
- 對于double類型的數(shù)據(jù),不能使用一個double作為構造參數(shù),可以通過Double.toString()轉(zhuǎn)為String后通過構造器進行創(chuàng)建?;蚴褂肂igDecimal.valueOf(double d) 方法,該方法內(nèi)部也是調(diào)用的Double.toString
new BigDecimal(Double.toString(0.1D)); BigDecimal.valueOf(0.1D);
基礎方法
1. add
BigDecimal res = new BigDecimal("1.23").add(new BigDecimal("1.23"))
2. subtract
BigDecimal res = new BigDecimal("1.23").subtract(BigDecimal.valueOf(0.23D))
3. multiply
BigDecimal res = BigDecimal.valueOf(2.2D).multiply(BigDecimal.valueOf(2.2D))
4. divide
BigDecimal res = BigDecimal.valueOf(10.0D) .divide(BigDecimal.valueOf(3.0D), 2, RoundingMode.DOWN); // 3.33
數(shù)值比較
不要使用 equals 方法進行比較,使用compareTo方法進行比較。equals 方法會比較兩個數(shù)字的精度,compareTo 方法則只會比較數(shù)值的大小
BigDecimal b1 = new BigDecimal("1.0"); BigDecimal b2 = new BigDecimal("1.00"); System.out.println(b1.equals(b2)); // false System.out.println(b1.compareTo(b2) == 0); // true
剔除尾部的零
BigDecimal bigDecimal = new BigDecimal("100.0"); System.out.println(bigDecimal); // 100.0 System.out.println(bigDecimal.toPlainString()); // 100.0 // 1. stripTrailingZeros: 去除尾部的0, 但是除數(shù)結果可能會為科學計數(shù)法格式的數(shù)值. 如: 1e+2(1 * 10 ^ 2) System.out.println(bigDecimal.stripTrailingZeros()); // 1E+2 // 2. toPlainString: 不使用指數(shù)形式的輸出, 就是單純的數(shù)值. System.out.println(bigDecimal.stripTrailingZeros().toPlainString()); // 100
到此這篇關于Java BigDecimal使用方法詳解的文章就介紹到這了,更多相關Java BigDecimal內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MyBatis-plus使用lambda條件構造器報錯問題及解決
這篇文章主要介紹了MyBatis-plus使用lambda條件構造器報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01SpringIOC?BeanDefinition的加載流程詳解
這篇文章主要為大家介紹了SpringIOC?BeanDefinition的加載流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10Spring整合TimerTask實現(xiàn)定時任務調(diào)度
這篇文章主要介紹了Spring整合TimerTask實現(xiàn)定時任務調(diào)度的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12java實現(xiàn)在線預覽--poi實現(xiàn)word、excel、ppt轉(zhuǎn)html的方法
這篇文章主要介紹了java實現(xiàn)在線預覽--poi實現(xiàn)word、excel、ppt轉(zhuǎn)html的方法,本文需要引入poi的jar包給大家介紹的非常詳細,需要的朋友可以參考下2019-09-09spring cloud gateway 如何修改請求路徑Path
這篇文章主要介紹了spring cloud gateway 修改請求路徑Path的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06