Java中涉及到金額業務的處理


一、MySql數據庫中如何定義關於金額字段:

       建議定義成【DECIMAL】類型,而不是float或者是double,因為這個兩者是以二進制儲存的,存在一定的誤差。具體事例可參考https://blog.csdn.net/xzp_12345/article/details/79460410

       此外還要注意的就是默認值, 一定寫成0.00, 不要用默認的NULL, 否則在進行加減排序等操作時, 會帶來轉換的麻煩

二、Java實體類中定義成【BigDecimal】類型,涉及到金額的加減乘除及值大小比較,使用其提供的相應方法處理。具體可參考https://blog.csdn.net/u011277123/article/details/70214630

三、在使用JSONArray.fromObject方法時,如果其中有float類型的值,有時候轉化的時候又會出現誤差問題,建議將需要傳入的數值改成字符串類型,接收到之后在進行轉值處理。具體可參考:http://www.iteye.com/problems/75223

 

四、在ireport打印有金額時,有時候又會出現誤差問題,試過將對於的值再ireport中Expression屬性設置成java.math.BigDecimal,Pattern屬性設置成#,##.00,仍是沒有作用,處理方法是從查詢的sql語句源頭出發,將涉及到的金額數值,轉化成char類型,如下

1
select  cast (totalMoney  as  char as  totalMoneyStr  from  demo

  


免責聲明!

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



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