2013-11-27 6 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"); 

Проблема в том, что я получаю outpout как 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 (см ответ Адам Arnold) ,

Для числового округления (производящего округлую число), используйте 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; результат = Math.round (результат * 10)/10d; Но не работает ... Изгиб всегда 5.654707363 –

Смежные вопросы