我希望我能理解为什么没有四舍五入从以下代码中获得的十进制数。
File path2 = Environment.getDataDirectory();
StatFs stat2 = new StatFs(path.getPath());
long blockSize2 = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
double result = availableBlocks * blockSize;
free = (Preference)this.findPreference("free_mem");
free.setSummary(Double.toString(result)+" GB");
在类似的代码中使用此指令并工作
result = Math.round(result * 10) / 10d;
为什么不在这里工作,我仍然看到一个有很多小数位的数字?
如果我理解你的问题,你需要NumberFormat
在这里:
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(1);
nf.format(result);
这将产生一个小数点后1位的数字。
因此,如果result
是6.6789
,它将产生6.7
。
相关:将数字舍入到小数点后第一位
只需注意:
如果你这样做:
Math.round(result * 10) / 10d;
你基本上说:
result
乘以10- 四舍五入结果
- 然后除以十
当你在第二步去掉小数时。除法后你又得到了一堆小数。