舍入数只到小数点后第一位

时间:2013-11-27 16:04:17

标签: java android xml

我想知道可用的手机内存,所以我写了这段代码。

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;

但是不起作用。有什么想法吗?

3 个答案:

答案 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。