我希望我能理解如何可能没有舍入从以下代码中获得的十进制数。
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;
为什么不在这里工作,我仍然看到一个带小数位数的数字?
答案 0 :(得分:1)
如果我理解你的问题,你需要NumberFormat
:
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(1);
nf.format(result);
这会生成一个带小数点后1位的数字。
因此如果result
为6.6789
,则会产生6.7
。
相关:Round number to only first decimal place
只需注意:
如果你这样做:
Math.round(result * 10) / 10d;
你基本上说:
result
与10 当你在第2步中删除小数时,你会在分割后获得另一组小数。