最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

String轉(zhuǎn)BigDecimal,BigDecimal常用操作,以及避免踩坑記錄

 更新時(shí)間:2023年07月13日 09:34:23   作者:霸道流氓氣質(zhì)  
這篇文章主要介紹了String轉(zhuǎn)BigDecimal,BigDecimal常用操作,以及避免踩坑記錄,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

String轉(zhuǎn)BigDecimal,BigDecimal常用操作,以及避免踩坑

String轉(zhuǎn)BigDecimal

String a = "50.00";  //字符串類型,必須是數(shù)字,否則會報(bào)錯(cuò), java.lang.NumberFormatException 異常
BigDecimal b =new BigDecimal(a);

BigDecimal加法運(yùn)算

BigDecimal planeTax=new BigDecimal(bookInfo.getPlaneTax());
BigDecimal yq=new BigDecimal(bookInfo.getYq());
BigDecimal publishPrice =  new BigDecimal(cabinInfo.getPublishPrice());
totalPrice =publishPrice.add(planeTax).add(yq);

BigDecimal減法運(yùn)算

BigDecimal planeTax=new BigDecimal(bookInfo.getPlaneTax());
BigDecimal yq=new BigDecimal(bookInfo.getYq());
BigDecimal publishPrice =  new BigDecimal(cabinInfo.getPublishPrice());
totalPrice =publishPrice.subtract(planeTax).subtract(yq);

BigDecimal乘法運(yùn)算

BigDecimal planeTax=new BigDecimal(bookInfo.getPlaneTax());
BigDecimal yq=new BigDecimal(bookInfo.getYq());
BigDecimal publishPrice =  new BigDecimal(cabinInfo.getPublishPrice());
totalPrice =publishPrice.multiply(planeTax).multiply(yq);

BigDecimal避免踩坑

BigDecimal planeTax=new BigDecimal(bookInfo.getPlaneTax());//string數(shù)據(jù)轉(zhuǎn)換BigDecimal
  BigDecimal yq=new BigDecimal(bookInfo.getYq());//string數(shù)據(jù)轉(zhuǎn)換BigDecimal
  BigDecimal publishPrice =  new BigDecimal(cabinInfo.getPublishPrice());//string數(shù)據(jù)轉(zhuǎn)換BigDecimal
//進(jìn)行相加再相乘操作時(shí)注意不要直接用符號+、-、*等,后面是四舍五入的格式
  totalPrice =(publishPrice.add(planeTax).add(yq)).multiply( new BigDecimal(model.getBookInfoList().size()))
  .setScale(2,     BigDecimal.ROUND_HALF_UP); 
  totalPrice = price.subtract(couponMoney);

String如何轉(zhuǎn)成BigDecimal_Java.math.BigDecimal類的使用

浮點(diǎn)數(shù)值不適用于無法接受舍入誤差的金融計(jì)算中。

例如,命令System.out.prmtln (2.0-1.1)將打印出0.8999999999999999,而不是人們想象的0.9 。

efba9c146bf98a39c70f6d8d6e48552a.png

2.0-1.1的運(yùn)算結(jié)果

這種舍入誤差的主要原因是浮點(diǎn)數(shù)值采用二進(jìn)制系統(tǒng)表示,而在二進(jìn)制系統(tǒng)中 無法精確地表示分?jǐn)?shù)1/10。這就好像十進(jìn)制無法精確地表示分?jǐn)?shù)1/3一樣。如果在數(shù)值 計(jì)算中不允許有任何舍入誤差,就應(yīng)該使用BigDecimaI類

BigDecimal構(gòu)造方法

  • BigDecimal(double val) 將double表示形式轉(zhuǎn)換為BigDecimal *不建議使用
  • BigDecimal(int val) 將int表示形式轉(zhuǎn)換成BigDecimal
  • BigDecimal(String val) 將String表示形式轉(zhuǎn)換成BigDecimal

5576f1e85483c7240da34e63e01cf936.png

JDK1.8 API幫助文檔

為什么不建議采用第一種構(gòu)造方法呢?來看例子

9d3f08dfe64fa02b4ca5255cba45fa83.png

為什么bDouble不等于2.3?

為什么會出現(xiàn)這種情況呢?

JDK的描述:

1、參數(shù)類型為double的構(gòu)造方法的結(jié)果有一定的不可預(yù)知性。這是因?yàn)?.1無法準(zhǔn)確地表示為 double,實(shí)際上等于0.1000000000000000055511151231257827021181583404541015625。

2、另一方面,String 構(gòu)造方法是完全可預(yù)知的:寫入 newBigDecimal(“0.1”) 將創(chuàng)建一個(gè) BigDecimal,它正好等于預(yù)期的 0.1。因此,比較而言,通常建議優(yōu)先使用String構(gòu)造方法。

BigDecimal的靜態(tài)方法valueOf

當(dāng)double必須用作BigDecimal的源時(shí),可以使用BigDecimal的靜態(tài)方法valueOf

如果使用Double.toString(double)轉(zhuǎn)成String,然后再使用BigDecimal構(gòu)造方法,*這樣會很復(fù)雜,如下

3956b732637cf180dfb1654c2b9ebb25.png

BigDecimal加減乘除運(yùn)算

對于常用的加,減,乘,除,BigDecimal類提供了相應(yīng)的成員方法

340b1cb50292fae1dd0532bc3bd7c301.png

API文檔給出的BigDecimal類相應(yīng)的成員方法

大致的用法如下

889a08493e63f4e42adb72440bd10fa2.png

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Ubuntu快速安裝eclipse

    Ubuntu快速安裝eclipse

    這篇文章主要為大家詳細(xì)介紹了Ubuntu快速安裝eclipse的簡單教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java雙重檢查加鎖單例模式的詳解

    Java雙重檢查加鎖單例模式的詳解

    今天小編就為大家分享一篇關(guān)于Java雙重檢查加鎖單例模式的詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java HttpClient執(zhí)行請求時(shí)配置cookie流程詳細(xì)講解

    Java HttpClient執(zhí)行請求時(shí)配置cookie流程詳細(xì)講解

    這篇文章主要介紹了Java HttpClient執(zhí)行請求時(shí)配置cookie流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • 使用Springboot對配置文件中的敏感信息加密

    使用Springboot對配置文件中的敏感信息加密

    這篇文章主要介紹了使用Springboot對配置文件中的敏感信息加密方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中MessageDigest來實(shí)現(xiàn)數(shù)據(jù)加密的方法

    Java中MessageDigest來實(shí)現(xiàn)數(shù)據(jù)加密的方法

    這篇文章主要介紹了Java中MessageDigest來實(shí)現(xiàn)數(shù)據(jù)加密的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例

    IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例

    本文主要介紹了IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Spring實(shí)現(xiàn)內(nèi)置監(jiān)聽器

    Spring實(shí)現(xiàn)內(nèi)置監(jiān)聽器

    這篇文章主要介紹了Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧,希望能給你帶來幫助
    2021-07-07
  • SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的示例代碼

    SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的示例代碼

    文章主要介紹了SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的相關(guān)內(nèi)容,包括服務(wù)注冊和發(fā)現(xiàn)中心的配置,如使用Nacos、CommandLineRunner啟動(dòng)Netty服務(wù)等,還介紹了通過Redis實(shí)現(xiàn)消息發(fā)布訂閱的機(jī)制,需要的朋友可以參考下
    2024-11-11
  • Java協(xié)議字節(jié)操作工具類詳情

    Java協(xié)議字節(jié)操作工具類詳情

    這篇文章主要介紹了Java協(xié)議字節(jié)操作工具類詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • java使用ant.jar解壓縮文件的示例代碼

    java使用ant.jar解壓縮文件的示例代碼

    這篇文章主要介紹了java使用ant.jar解壓縮文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09

最新評論

崇仁县| 乐陵市| 泰兴市| 南投市| 信丰县| 瑞丽市| 澄城县| 黄平县| 新龙县| 青神县| 吉木乃县| 新建县| 宣汉县| 昌平区| 吴旗县| 遂溪县| 昂仁县| 伊春市| 兴业县| 衡阳市| 宜黄县| 铜山县| 宁河县| 临海市| 苏尼特左旗| 永清县| 江城| 莒南县| 易门县| 克什克腾旗| 郧西县| 威信县| 河北区| 绥化市| 蒙山县| 关岭| 龙胜| 三江| 江口县| 萨迦县| 志丹县|