我想知道可用的手机内存,所以我写了这段代码。
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");
问题是我得到一个输出为5.654707363。我尝试使用
仅取第一个小数位free = Math.round(size * 10) / 10d;
但是不起作用。有什么想法吗?
答案 0 :(得分:4)
如果我理解你的问题,你需要NumberFormat
:
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(1);
nf.format(5.654707363);
产生 5,7
答案 1 :(得分:0)
如果您需要显示值,请使用NumberFormat
(请参阅Adam Arnold的回答)。
对于数字舍入(产生舍入数字),请使用BigDecimal
:
double num = 3.141592653589793d;
double rounded = BigDecimal.valueOf(num).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
答案 2 :(得分:0)
您是否尝试过使用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。