2010-01-29 11 views
9

In java, è possibile utilizzare String.format per mostrare solo un decimale se è effettivamente necessario? Ad esempio, se faccio questo:È possibile utilizzare String.format per un punto decimale condizionale?

String.format("%.1f", amount); 

sarà formato: "1,2222" -> "1.2" "1,000" -> "1.0" ecc,

ma nel secondo caso (1.000) Voglio che ritorni solo "1". È possibile con String.format, o avrò bisogno di usare un DecimalFormatter?

Se devo utilizzare un formattatore decimale, dovrò creare un DecimalFormatter separato per ogni tipo di formato che desidero? (Fino a 1 decimale, fino a 2 cifre decimali, ecc)

risposta

10

No, è necessario utilizzare DecimalFormat:

final DecimalFormat f = new DecimalFormat("0.##"); 
System.out.println(f.format(1.3)); 
System.out.println(f.format(1.0)); 

mettere il maggior numero # s come vuoi; il DecimalFormat stampa solo il numero di cifre che ritiene significative, fino al numero di # s.

3

Questo potrebbe ottenere quello che stai cercando; Non sono sicuro dei requisiti o del contesto della tua richiesta.

float f; 
f = 1f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1 
f = 1.555f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555 

Ha funzionato benissimo per quello che mi serviva.

FYI, sopra, System.out.printf (fmt, x) è come System.out.print (String.format (fmt, x)

Problemi correlati