2013-11-27 78 views
2

我想知道可用的手機內存,所以我寫了這段代碼。圓號只有第一位小數位

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

「它不起作用」永遠不會給你一個答案:你必須指定實際結果是什麼,以及爲什麼它是意外的。 – jez

回答

4

如果我明白你的問題的權利,你需要NumberFormat這裏:

NumberFormat nf = NumberFormat.getInstance(); 
nf.setMaximumFractionDigits(1); 
nf.format(5.654707363); 

產生5,7

0

如果你需要顯示的目的,值使用NumberFormat(見答案由亞當·阿諾德) 。

對於數字四捨五入(生產圓潤號),使用BigDecimal

double num = 3.141592653589793d; 
double rounded = BigDecimal.valueOf(num).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); 
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的簡單測試。

+0

是的,我試過 double result = availableBlocks * blockSize; result = Math.round(result * 10)/ 10d; 但不起作用...輸出總是5.654707363 –