欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java BigDecimal使用方法詳解

 更新時(shí)間:2022年12月20日 09:33:10   作者:碼畜c  
Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù),但在實(shí)際應(yīng)用中,可能需要對更大或者更小的數(shù)進(jìn)行運(yùn)算和處理

重要屬性

1、scale: 小數(shù)點(diǎn)后的位數(shù)。如將1.234構(gòu)建為BigDecimal,scale屬性則為3

2、RoundingMode(對照數(shù)軸上正負(fù)數(shù)、0的位置分布):

小數(shù)的保留模式。在計(jì)算除法時(shí),當(dāng)商的小數(shù)位過多,想保留指定的位數(shù)時(shí)使用?;蛘呱虨闊o限循環(huán)小數(shù)時(shí),若不指定RoundingMode則會發(fā)生異常。

  • UP: 正數(shù)向右增長,負(fù)數(shù)向左增長
  • DOWN: 正數(shù)向左增長,負(fù)數(shù)向右增長 (理解為直接忽略其余小數(shù)位)
  • CEILING: 正負(fù)數(shù)全部向右增長
  • FLOOR: 正負(fù)數(shù)全部向左增長
  • HALF_UP: 四舍五入
  • HALF_DOWN: 四舍六入
  • HALF_EVEN: 四舍五入,當(dāng)為5時(shí),判斷前一位的奇偶性。奇數(shù)進(jìn)位,偶數(shù)不進(jìn)位

3、例子

BigDecimal bigDecimal = new BigDecimal("1.555");
bigDecimal = bigDecimal.setScale(2, RoundingMode.HALF_UP);
System.out.println(bigDecimal); // 1.56

Double 轉(zhuǎn) BigDecimal

  • 最好將一個(gè)字符串作為構(gòu)造參數(shù),這樣創(chuàng)建的BigDecimal是可預(yù)知、準(zhǔn)確的
  • 對于double類型的數(shù)據(jù),不能使用一個(gè)double作為構(gòu)造參數(shù),可以通過Double.toString()轉(zhuǎn)為String后通過構(gòu)造器進(jìn)行創(chuàng)建?;蚴褂肂igDecimal.valueOf(double d) 方法,該方法內(nèi)部也是調(diào)用的Double.toString
new BigDecimal(Double.toString(0.1D));
BigDecimal.valueOf(0.1D);

基礎(chǔ)方法

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 方法進(jìn)行比較,使用compareTo方法進(jìn)行比較。equals 方法會比較兩個(gè)數(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ù)結(jié)果可能會為科學(xué)計(jì)數(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

到此這篇關(guān)于Java BigDecimal使用方法詳解的文章就介紹到這了,更多相關(guān)Java BigDecimal內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-plus使用lambda條件構(gòu)造器報(bào)錯問題及解決

    MyBatis-plus使用lambda條件構(gòu)造器報(bào)錯問題及解決

    這篇文章主要介紹了MyBatis-plus使用lambda條件構(gòu)造器報(bào)錯問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java設(shè)計(jì)模式之原型模式詳細(xì)解析

    Java設(shè)計(jì)模式之原型模式詳細(xì)解析

    這篇文章主要介紹了Java設(shè)計(jì)模式之原型模式詳細(xì)解析,原型模式就是用一個(gè)已經(jīng)創(chuàng)建的實(shí)例作為原型,通過復(fù)制該原型對象來創(chuàng)建一個(gè)和原型對象相同的新對象,需要的朋友可以參考下
    2023-11-11
  • 深入淺析SPI機(jī)制在JDK與Spring?Boot中的應(yīng)用

    深入淺析SPI機(jī)制在JDK與Spring?Boot中的應(yīng)用

    SPI是一種使軟件框架或庫更加模塊化、可擴(kuò)展和可維護(hù)的有效方法。通過遵循“開閉原則”,?SPI?確保了系統(tǒng)的穩(wěn)定性和靈活性,從而滿足了不斷變化的業(yè)務(wù)需求,這篇文章主要介紹了SPI機(jī)制在JDK與Spring?Boot中的應(yīng)用,需要的朋友可以參考下
    2023-09-09
  • SpringIOC?BeanDefinition的加載流程詳解

    SpringIOC?BeanDefinition的加載流程詳解

    這篇文章主要為大家介紹了SpringIOC?BeanDefinition的加載流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Java 實(shí)現(xiàn)一個(gè)漢諾塔實(shí)戰(zhàn)練習(xí)

    Java 實(shí)現(xiàn)一個(gè)漢諾塔實(shí)戰(zhàn)練習(xí)

    漢諾塔是源于印度一個(gè)古老傳說的益智玩具。大梵天創(chuàng)造世界時(shí)做了三根石柱,在一根柱子上從下往上按大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,三根柱子之間一次只能移動一個(gè)圓盤
    2021-10-10
  • mybatis嵌套循環(huán)map方式(高級用法)

    mybatis嵌套循環(huán)map方式(高級用法)

    這篇文章主要介紹了mybatis嵌套循環(huán)map方式(高級用法),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring整合TimerTask實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度

    Spring整合TimerTask實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度

    這篇文章主要介紹了Spring整合TimerTask實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java中抓取 Thread Dumps 的方式匯總

    Java中抓取 Thread Dumps 的方式匯總

    Thread dumps(線程轉(zhuǎn)儲)能幫助我們判斷 CPU 峰值、死鎖、內(nèi)存異常、應(yīng)用反應(yīng)遲鈍、響應(yīng)時(shí)間變長和其他系統(tǒng)問題。在這篇文章當(dāng)中,總結(jié)了7中抓取 Java Thread Dumps 文件的方式,分享給大家,希望對大家學(xué)習(xí)Java能夠有所幫助。
    2016-06-06
  • java實(shí)現(xiàn)在線預(yù)覽--poi實(shí)現(xiàn)word、excel、ppt轉(zhuǎn)html的方法

    java實(shí)現(xiàn)在線預(yù)覽--poi實(shí)現(xiàn)word、excel、ppt轉(zhuǎn)html的方法

    這篇文章主要介紹了java實(shí)現(xiàn)在線預(yù)覽--poi實(shí)現(xiàn)word、excel、ppt轉(zhuǎn)html的方法,本文需要引入poi的jar包給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-09-09
  • spring cloud gateway 如何修改請求路徑Path

    spring cloud gateway 如何修改請求路徑Path

    這篇文章主要介紹了spring cloud gateway 修改請求路徑Path的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論