doubule在商用計算中的替代方案

541732025發表於2013-09-02

由於在java中double型別資料儲存的特殊性,在進行商用計算時往往會出現錯誤的結果,所以不得不用BigDecimal來取代double來進行計算。

在構造Bigdecimal物件時,API提供了double入參,但這是一個陷阱,由double構造的BigDecimal結果也是不可預知的,所以,只能選擇用String來構造BigDecimal

BigDecimal bg1 = New BigDecimal(str);
BigDecimal bg2 = New BigDecimal(str);

BigDecimal常用操作
1,加
bg1.add(bg2);
精度為max(bg1.scale(), bg2.scale())

2,減
bg1.subtract(bg2);
精度為max(bg1.scale(), bg2.scale())

3,乘
bg1.multiply(bg2);
精度為maxbg1.scale() + bg2.scale()

4,除以
bg1.divide(bg2, int scale, RoundingMode.HALF_UP)
精度為指定的scale,RoundingMode.HALF_UP為舍入模式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-772055/,如需轉載,請註明出處,否則將追究法律責任。

相關文章