1. 程式人生 > >Java計算double精度問題

Java計算double精度問題

分析:

  1. 我們在一些計算的時候,double型別的資料,經常會有精度丟失問題。
    例如:
        System.out.println(0.09 + 0.01);
        System.out.println(1 - 0.32);
        System.out.println(1.015 * 100);
        System.out.println(1.301 / 100);
        //執行結果分別是:
        //0.09999999999999999
        //0.6799999999999999
        //101.49999999999999
        //0.013009999999999999
這樣的資料往往不是我們想要的,看起來雖然很小,如果是關於金融的專案,後果就很嚴重了。
那麼我們應該怎麼解決此問題呢?
    檢視Java的api,找到了BigDecimal這個類,可以解決這個問題。
        BigDecimal bd1 = new BigDecimal("0.09");
        BigDecimal bd2 = new BigDecimal("0.01");
        System.out.println(bd1.add(bd2));//加法

        BigDecimal bd3 = new BigDecimal("1");
        BigDecimal bd4 = new
BigDecimal("0.32"); System.out.println(bd3.subtract(bd4));//減法 BigDecimal bd5 = new BigDecimal("1.015"); BigDecimal bd6 = new BigDecimal("100"); System.out.println(bd5.multiply(bd6));//乘法 BigDecimal bd7 = new BigDecimal("1.301"); BigDecimal bd8 = new BigDecimal("100"
); System.out.println(bd7.divide(bd8));//除法
輸出結果為:
        0.10
        0.68
        101.500
        0.01301

完美的解決了上面的問題。