DecimalFormat類——Java中字串型別的數字加減報錯和精度缺失的解決辦法
阿新 • • 發佈:2019-01-23
編碼中加減乘除經常遇到,稍有不適,友誼的小船說翻就翻。
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 字首或字尾中使用的任何其它字元,用來引用字首或字尾中的特殊字元。