Java面試高頻問題:用什麼數據類型存儲金額?


 

那麼請看下面的例子

public static void main(String[] args) {
    double a = 0.03;
    double b = 0.02;
    double c = a - b;
    System.out.println(c);  // 0.009999999999999998
    float d = (float)0.03;
    float e = (float)0.02;
    float f = d - e;
    System.out.println(f);  //0.01
}


結果會打印多少,大部分人肯定都在想結果肯定是0.01啊!結果居然是0.009999999999999998,因爲float與double都是浮點數,浮點數參與的運算通常伴隨着因爲無法精確表示而進行的近似或舍入,所以導致結果會有絲毫的偏差,而涉及金額的計算是絕對不予許存在偏差的。
我們可以使用BigDecimal來表示金額,或者是通過將金額的單位變小用整數來表示金額。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章