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.

Réponses:


528

Vous pouvez utiliser:

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

Voir aussi les javadocs


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);

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

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


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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.