BigDecimal創建初始化值類型對比


當初始化String類型和double類型,入參值相同,對比輸出值


   
   
  
  
          
  1. BigDecimal bigDecimalStr = new BigDecimal( "0.1");
  2. BigDecimal bigDecimalDou = new BigDecimal( 0.1);
  3. System.out.println( "bigDecimalStr: " + bigDecimalStr);
  4. System.out.println( "bigDecimalDou: " + bigDecimalDou);
  5. System.out.println( "bigDecimalStr and bigDecimalDou: " + bigDecimalStr.compareTo(bigDecimalDou));
輸出結果:


   
   
  
  
          
  1. bigDecimalStr: 0.1
  2. bigDecimalDou: 0.1000000000000000055511151231257827021181583404541015625
  3. bigDecimalStr and bigDecimalDou: - 1

對比結果,即String類型和double類型,double類型會使值變成64位失真。


在開發過程中,金額存儲小數的方式很常見,我們可以采用String入參的形式定義BigDecimal(如果可以的話,將金額弄成整數在顯示的時候除以位數,獲取真正的金額)

使用compareTo方法比較兩個金額的大小關系時:0表示相等,-1表示小於,1表示大於(上面那個例子就可以充分說明大小關系的比較)。在比較BigDecimal類型時,無法直接使用equals方法比較兩個值是否相等,不過可以采用將金額轉成字符串通過equals方法比較大小。



原文地址:https://blog.csdn.net/qq_27255679/article/details/79062415


免責聲明!

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



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