Bigdecimal 相加結果為0的解決


之前很少使用這樣的一個對象BigDecimal,今天在改需求的時候遇到了,結果坑爹的怎么相加最后都為零。

代碼如下:

  1. BigDecimal totalAmount = new BigDecimal(0);  
  2.         totalAmount.add(new BigDecimal(5000));  
  3.         System.out.println(totalAmount);  

輸出結果為0。

查資料后才知道,要這樣寫才行:

  1. BigDecimal totalAmount = new BigDecimal(0);  
  2.         totalAmount = totalAmount.add(new BigDecimal("5000"));  
  3.         System.out.println(totalAmount);  

 

同時,在new一個BigDecimal對象的時候,最好傳入字符串或者int類型的數字,因為傳入double類型的數字會有很神奇的事情發生,

比如說:

  1. BigDecimal totalAmount = new BigDecimal(0);  
  2.         totalAmount = totalAmount.add(new BigDecimal(0.59));  
  3.         System.out.println(totalAmount);  

輸出結果:

0.58999999999999996891375531049561686813831329345703125

但是如果傳入的是String類型的數字:

  1. BigDecimal totalAmount = new BigDecimal(0);  
  2.         totalAmount = totalAmount.add(new BigDecimal("0.59"));  
  3.         System.out.println(totalAmount);  

輸出結果:

0.59

至於為什么會這樣子,小弟才疏學淺。。請看此文:BigDecimal 的那些坑事兒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM