Comment formater un nombre 0..9 pour l'afficher avec 2 chiffres (ce n'est PAS une date)

215

Je voudrais toujours afficher un nombre inférieur à 100 avec 2 chiffres (exemple: 03, 05, 15 ...)

Comment puis-je ajouter le 0 sans utiliser de conditionnel pour vérifier s'il est inférieur à 10?

J'ai besoin d'ajouter le résultat à une autre chaîne, donc je ne peux pas utiliser printf.

realtebo
la source

Réponses:

528

Vous pouvez utiliser:

String.format("%02d", myNumber)

Voir aussi les javadocs

beny23
la source
1
Et si mon numéro est un double?
Fra
3
@Fra, alors vous utiliseriez String.format("%02.0f", myNumber)si vous ne voulez pas les nombres après la virgule décimale
beny23
Pour ceux qui veulent lire spécifiquement sur la syntaxe du format de chaîne: Format String Syntax
Pony
Cela générera un avertissement Android Linter "L'utilisation implicite des paramètres régionaux par défaut est une source courante de bogues: utilisez plutôt String.format (Locale, ...)"
Christopher Stock
1
@ChristopherStock C'est un problème complètement distinct, lié à l'utilisation des paramètres régionaux par défaut corrects de l'appareil sur lequel l'application s'exécute - vous pouvez l'ignorer ou le corriger, mais cela est lié à Android et aux paramètres régionaux uniquement. Rien à voir avec le formatage réel des chaînes
Radu
55

Si vous devez imprimer le numéro, vous pouvez utiliser printf

System.out.printf("%02d", num);

Vous pouvez utiliser

String.format("%02d", num);

ou

(num < 10 ? "0" : "") + num;

ou

(""+(100+num)).substring(1);
Peter Lawrey
la source
2
L'utilisation d'un format est de loin la plus lente, mais elle est plus claire et moins susceptible de mal tourner. par exemple, si num est -1. ;)
Peter Lawrey
42

Vous pouvez utiliser ceci:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01
Daniel André
la source
Cela devrait être la réponse acceptée! Le résultat de la solution via String.format peut varier en raison des paramètres régionaux. (s. Android Linter Warning "L'utilisation implicite des paramètres régionaux par défaut est une source courante de bogues: utilisez String.format (paramètres régionaux, ...))
Christopher Stock
3

La classe String est livrée avec les capacités de formatage:

System.out.println(String.format("%02d", 5));

pour une documentation complète, voici le doc

Grimmy
la source
Il ditjava.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha
2

Dans les ressources Android, c'est assez simple

<string name="smth">%1$02d</string>
Vlad
la source