金錢貨幣用什么類型--(Java)


0、前言

  項目中,基本上都會涉及到金錢;那么金錢用什么數據類型存儲呢?

  不少新人都會認為用double,因為它是雙精度類型啊,或者float,

  其實,float和double都是不能用來表示精確的類型的,也就是說金錢是萬萬不能用float和double來存儲的!

1、why?

先來個例子:

你猜猜輸出是什么,0.01?NO,請看:

 

 

 

  為什么會這樣呢?

   因為float和double都是浮點數, 都有取值范圍, 都有精度范圍. 浮點數與通常使用的小數不同, 使用中, 往往難以確定.

  常見的問題是定義了一個浮點數, 經過一系列的計算, 它本來應該等於某個確定值, 但實際上並不是!

  所以說,float和double都是不能用來表示精確的類型的;

  金額必須是完全精確的計算, 故不能使用double或者float, 而應該采用java.math.BigDecimal.

 

2、結論

  float和double都是不能用來表示精確的類型的,也就是說金錢是萬萬不能用float和double來存儲的!

 

  金錢應該采用java.math.BigDecimal存儲;

  MYSQL數據庫選擇decimal類型,注意默認值 一定寫成0.00, 不要用默認的NULL, 否則在進行加減排序等操作時, 會帶來轉換的麻煩!

 

3、BigDecimal的常用方法

 

 

 

 

 


免責聲明!

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



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