Java在做变量自等的时候,可能会发生保留小数位数不足的情况。如下代码,保留3位小数,实际运行中,发现有些结果是2位的,有些是3位的。
avg = sum_time/count;
avg = (double)(Math.round(avg * 10000)/10000.0);
DecimalFormat df = new DecimalFormat("#.000");
avg = Double.parseDouble(df.format(avg));
System.out.println(avg);
//执行这一句的时候,相当于从字符串转回double,所以丢失了最后用来补足位数的0.
avg = Double.parseDouble(df.format(avg));
如下代码输出结果始终为3位
avg = sum_time/count;
avg = (double)(Math.round(avg * 10000)/10000.0);
DecimalFormat df = new DecimalFormat("#.000");
String avg_result = df.format(avg);
System.out.println(avg_result);