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

String轉BigDecimal,BigDecimal常用操作,以及避免踩坑記錄

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

String轉BigDecimal,BigDecimal常用操作,以及避免踩坑

String轉BigDecimal

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

BigDecimal加法運算

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減法運算

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乘法運算

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

String如何轉成BigDecimal_Java.math.BigDecimal類的使用

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

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

efba9c146bf98a39c70f6d8d6e48552a.png

2.0-1.1的運算結果

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

BigDecimal構造方法

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

5576f1e85483c7240da34e63e01cf936.png

JDK1.8 API幫助文檔

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

9d3f08dfe64fa02b4ca5255cba45fa83.png

為什么bDouble不等于2.3?

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

JDK的描述:

1、參數(shù)類型為double的構造方法的結果有一定的不可預知性。這是因為0.1無法準確地表示為 double,實際上等于0.1000000000000000055511151231257827021181583404541015625。

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

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

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

如果使用Double.toString(double)轉成String,然后再使用BigDecimal構造方法,*這樣會很復雜,如下

3956b732637cf180dfb1654c2b9ebb25.png

BigDecimal加減乘除運算

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

340b1cb50292fae1dd0532bc3bd7c301.png

API文檔給出的BigDecimal類相應的成員方法

大致的用法如下

889a08493e63f4e42adb72440bd10fa2.png

總結

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

相關文章

  • Java使用AOP技術實現(xiàn)通用接口驗簽工具

    Java使用AOP技術實現(xiàn)通用接口驗簽工具

    這篇文章主要為大家詳細介紹了Java如何使用AOP技術實現(xiàn)通用接口驗簽工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下吧
    2025-03-03
  • SpringBoot使用Sa-Token實現(xiàn)路徑攔截和特定接口放行

    SpringBoot使用Sa-Token實現(xiàn)路徑攔截和特定接口放行

    這篇文章主要介紹了SpringBoot使用Sa-Token實現(xiàn)路徑攔截和特定接口放行,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • HashMap實現(xiàn)保存兩個key相同的數(shù)據(jù)

    HashMap實現(xiàn)保存兩個key相同的數(shù)據(jù)

    這篇文章主要介紹了HashMap實現(xiàn)保存兩個key相同的數(shù)據(jù)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 詳解Spring Data JPA使用@Query注解(Using @Query)

    詳解Spring Data JPA使用@Query注解(Using @Query)

    本篇文章主要介紹了詳解Spring Data JPA使用@Query注解(Using @Query),具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • maven依賴的配置和排除依賴過程

    maven依賴的配置和排除依賴過程

    這篇文章主要介紹了maven依賴的配置和排除依賴過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 詳解Spring Cloud Gateway 限流操作

    詳解Spring Cloud Gateway 限流操作

    這篇文章主要介紹了詳解Spring Cloud Gateway 限流操作,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • SpringBoot 統(tǒng)一請求返回的實現(xiàn)

    SpringBoot 統(tǒng)一請求返回的實現(xiàn)

    這篇文章主要介紹了SpringBoot 統(tǒng)一請求返回的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • java實現(xiàn)學生選課系統(tǒng)

    java實現(xiàn)學生選課系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)學生選課系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Intellij IDEA中一次性折疊所有Java代碼的快捷鍵設置

    Intellij IDEA中一次性折疊所有Java代碼的快捷鍵設置

    這篇文章主要介紹了Intellij IDEA中一次性折疊所有Java代碼的快捷鍵設置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Spring Security如何使用URL地址進行權限控制

    Spring Security如何使用URL地址進行權限控制

    這篇文章主要介紹了Spring Security如何使用URL地址進行權限控制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論