編碼中加減乘除經常遇到,稍有不適,友誼的小船說翻就翻。
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 前綴或後綴中使用的任何其它字符,用來引用前綴或後綴中的特殊字符。