2012-03-02 3 views
8

ciao io sto cercando di stampare dopo aver diviso in costruttore di archi e di stampare tale stringa builder Let me dimostrare il mio codice,Come stampare fino a due cifre decimali in java usando il generatore di stringhe?

string.append("Memomry usage:total:"+totalMemory/1024/1024+ 
"Mb-used:"+usageMemory/1024/1024+ 
" Mb("+Percentage+"%)-free:"+freeMemory/1024/1024+ 
" Mb("+Percentagefree+"%)"); 

nel codice di cui sopra "totalMemory" e "FreeMemory" è di tipo a doppio avere un valore byte al punto non nullo così ho dividerlo per "1024" due volte per ottenere in "MB" e "stringa" è variabile di stringa builder dopo l'utilizzo di questo codice che sto stampando semplicemente uno sto ottenendo risultato, come mostrato di seguito,

Used Memory:Memomry usage: 
total:13.3125Mb-used:0.22920989990234375Mb (0.017217645063086855%) 
-free:13.083290100097656Mb (0.9827823549369131%) 

voglio ottenere la percentuale in twodecimal ei valori di memoria utilizzata e libera in mb come questo "usato: 2345.25" in questo patt n ricordare

speranze per i vostri suggerimenti

Grazie in anticipo

+0

Perché utilizzare StringBuilder? È la tecnologia sbagliata per questo problema. Vedere le risposte ... – EJP

risposta

12

Che ne dici di String.format()?

System.out.println(String.format("output: %.2f", 123.456)); 

uscita:

output: 123.46 
2

Prova come questo

double d = 1.234567; 
    DecimalFormat df = new DecimalFormat("#.##"); 
    System.out.print(df.format(d)); 

Utilizzando DecimalFormat, siamo in grado di formattare il modo che volevamo vedere.

+0

Vedere anche questa risposta SO http://stackoverflow.com/a/5710406/713414 – Jayy

1

È possibile utilizzare DecimalFormat per stampare fino a due posizioni decimali. Così, per stampare x = 2345.2512 con due cifre decimali, si può scrivere

NumberFormat f = new DecimalFormat("#.00"); 
System.out.println(f.format(x)); 

che stamperà 2.345,25.

1

Anche se è possibile utilizzare NumberFormat ed è sottoclasse DecimalFormat per questo problema, queste classi forniscono un sacco di funzionalità che non può essere richiesto per l'applicazione.

Se l'obiettivo è solo una bella stampa, raccomanderei l'uso della funzione di formattazione della classe String. Per il vostro codice specifico che sarebbe simile a questa:

string.append(String.format("Memomry usage:total:%1.2f Mb-used:%1.2f Mb(%1.2f %%)-free:%1.2f Mb(%1.2f %%)",totalMemory/1024/1024,usageMemory/1024/1024,Percentage,freeMemory/1024/1024,Percentagefree)); 

Se avete intenzione di specificare un formato standard in cui tutti i numeri sono rappresentati indipendentemente dal fatto che essi vengono analizzati da stringhe o formattati in stringhe, quindi mi sento di raccomandare usando singleton delle classi * Format. Consentono di utilizzare formati standard e anche di passare descrizioni di formato tra metodi.

Spero che ti aiuti a selezionare il metodo giusto da utilizzare nella tua applicazione.