那麼請看下面的例子
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來表示金額,或者是通過將金額的單位變小用整數來表示金額。