Cómo formatear un número 0..9 para mostrarlo con 2 dígitos (NO es una fecha)


215

Me gustaría mostrar siempre un número inferior a 100 con 2 dígitos (ejemplo: 03, 05, 15 ...)

¿Cómo puedo agregar el 0 sin usar un condicional para verificar si es menor de 10?

Necesito agregar el resultado a otra Cadena, por lo que no puedo usar printf.

Respuestas:


528

Puedes usar:

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

Ver también los javadocs


1
¿Qué pasa si myNumber es un doble?
Fra

3
@Fra, entonces usarías String.format("%02.0f", myNumber)si no quieres los números después del punto decimal
beny23

Para aquellos que quieran leer específicamente sobre la sintaxis de formato de cadena: Sintaxis de cadena de formato
Pony

Esto generará una advertencia de Android Linter "El uso implícito de la configuración regional predeterminada es una fuente común de errores: utilice String.format (Configuración regional, ...) en su lugar"
Christopher Stock

1
@ChristopherStock Ese es un problema completamente diferente, que tiene que ver con el uso de la configuración regional predeterminada correcta del dispositivo en el que se ejecuta la aplicación; puede ignorarlo o arreglarlo, pero eso está relacionado solo con Android y las configuraciones regionales. Nada que ver con el formato de cadena real
Radu

55

Si necesita imprimir el número, puede usar printf

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

Puedes usar

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

o

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

o

(""+(100+num)).substring(1);

2
Usar un formato es, con mucho, el más lento, pero es más claro y es menos probable que salga terriblemente mal. por ejemplo, si num es -1. ;)
Peter Lawrey

42

Puedes usar esto:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01

¡Esta debería ser la respuesta aceptada! El resultado de la solución a través de String.format puede variar debido a la configuración regional. (s. Advertencia de Android Linter "El uso implícito de la configuración regional predeterminada es una fuente común de errores: Use String.format (Configuración regional, ...))
Christopher Stock

3

La clase String viene con las habilidades de formato:

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

para documentación completa, aquí está el documento


Dicejava.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha

2

En los recursos de Android es bastante simple

<string name="smth">%1$02d</string>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.