2010-01-29 4 views
9

En java, est-il possible d'utiliser String.format pour afficher uniquement une décimale s'il y a réellement un besoin? Par exemple, si je fais ceci:Est-il possible d'utiliser String.format pour un point décimal conditionnel?

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

il forme: "1,2222" -> "1.2" "1.000" -> "1.0" etc,

mais dans le second cas (1.000) Je veux qu'il retourne juste "1". Est-ce possible avec String.format, ou vais-je devoir utiliser un DecimalFormatter?

Si je dois utiliser un formateur décimal, devrai-je créer un DecimalFormatter distinct pour chaque type de format que je veux? (Jusqu'à 1 place décimale, jusqu'à 2 décimales, etc.)

Répondre

10

Non, vous devez utiliser DecimalFormat:

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

Mettez autant # s que vous le souhaitez; le DecimalFormat n'imprimera que le nombre de chiffres qu'il estime significatifs, jusqu'au nombre de # s.

3

Cela pourrait vous donner ce que vous cherchez; Je ne suis pas sûr des exigences ou du contexte de votre demande.

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 

J'ai très bien travaillé pour ce dont j'avais besoin.

FYI, ci-dessus, System.out.printf (fmt, x) est comme System.out.print (String.format (fmt, x)

Questions connexes