舍入数只到小数点后第一位
我想知道可用的手机内存,所以我写了这段代码。
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");
问题是我得到一个outpout为5.654707363。 我试图只使用第一个小数位
free = Math.round(size * 10) / 10d;
但是不起作用。 有任何想法吗?
如果我理解你的问题,你需要在这里使用NumberFormat
:
NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(1); nf.format(5.654707363);
产生5,7
如果您需要显示用途的值,请使用NumberFormat
(请参阅Adam Arnold的回答)。
对于数字舍入(生成舍入数字),请使用BigDecimal
:
double num = 3.141592653589793d; double rounded = BigDecimal.valueOf(num).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
你尝试过使用free = Math.round(free * 10) / 10d;
而不是free = Math.round(size * 10) / 10d;
? 我不认为size
是一个定义的变量。
一个简单的测试
double free = 5.654707363; free = Math.round(free * 10) / 10d; System.out.println(free);
输出5.7。