1. 程式人生 > >DecimalFormat類——Java中字串型別的數字加減報錯和精度缺失的解決辦法

DecimalFormat類——Java中字串型別的數字加減報錯和精度缺失的解決辦法

        編碼中加減乘除經常遇到,稍有不適,友誼的小船說翻就翻。

        Demo來一發,做做記錄:

    //保留兩位小數
    private DecimalFormat decimalFormat = new DecimalFormat("0.00");
        String str1="0.01";
        String str2="0.09";
        //轉化為Double型別數值相加減,精度不會缺失
        double sum = Double.parseDouble(str1) + Double.parseDouble(str2);
        LogUtil.d("sum", sum + "");                //列印結果 sum=0.09999999999999999
        String formatTitle = decimalFormat.format(sum);
        LogUtil.d("formatum", formatTitle);        //列印結果 formatTitle=0.10

         其中主要用到了DecimalFormat 這個類,它是 NumberFormat 的一個具體子類,用於格式化十進位制數字。

         Demo示例:

        DecimalFormat df1 = new DecimalFormat("0.0");
        DecimalFormat df2 = new DecimalFormat("#.#");
        DecimalFormat df3 = new DecimalFormat("000.000");
        DecimalFormat df4 = new DecimalFormat("###.###");

        LogUtil.d("sum",df1.format(12.34));     //列印結果 sum: 12.3
        LogUtil.d("sum",df2.format(12.34));     //列印結果 sum: 12.3
        LogUtil.d("sum",df3.format(12.34));     //列印結果 sum: 012.340
        LogUtil.d("sum",df4.format(12.34));     //列印結果 sum: 12.34

         以下摘自百度百科:

         DecimalFormat 包含一個模式 和一組符號

    符號含義:
    0  一個數字
    #  一個數字,不包括 0
    .  小數的分隔符的佔位符
    ,  分組分隔符的佔位符
    ;  分隔格式。
    -  預設負數字首。
    % 乘以 100 和作為百分比顯示
    ?  乘以 1000 和作為千進位制貨幣符顯示;用貨幣符號代替;如果雙寫,用國際貨幣符號代替。如果出現在一個模式中,用貨幣十進位制分隔符代替十進位制分隔符。
    X  字首或字尾中使用的任何其它字元,用來引用字首或字尾中的特殊字元。