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  前綴或後綴中使用的任何其它字符,用來引用前綴或後綴中的特殊字符。

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