带有数学舍入的整数:不起作用



我希望我能理解为什么没有四舍五入从以下代码中获得的十进制数。

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位的数字。

因此,如果result6.6789,它将产生6.7

相关:将数字舍入到小数点后第一位

只需注意:

如果你这样做:

Math.round(result * 10) / 10d;

你基本上说:

  1. result乘以10
  2. 四舍五入结果
  3. 然后除以十

当你在第二步去掉小数时。除法后你又得到了一堆小数。

最新更新