relleno numeros numero izquierda espacios escribir derecha con como ceros agregar java

numeros - ¿Agregar ceros iniciales al número en Java?



numero con ceros a la izquierda java (5)

Desde Java 1.5 puedes usar el método String.format . Por ejemplo, para hacer lo mismo que tu ejemplo:

String format = String.format("%%0%dd", digits); String result = String.format(format, num); return result;

En este caso, está creando la cadena de formato utilizando el ancho especificado en dígitos y luego aplicándolo directamente al número. El formato para este ejemplo se convierte de la siguiente manera:

%% --> % 0 --> 0 %d --> <value of digits> d --> d

Entonces, si los dígitos son iguales a 5, la cadena de formato se convierte en %05d que especifica un número entero con un ancho de 5 imprimiendo ceros a la izquierda. Consulte la documentación de Java para String.format para obtener más información sobre los especificadores de conversión.

Esta pregunta ya tiene una respuesta aquí:

¿Hay una mejor manera de obtener este resultado? Esta función falla si num tiene más dígitos que dígitos, y creo que debería estar en la biblioteca en algún lugar (como Integer.toString (x, "% 3d") o algo así)

static String intToString(int num, int digits) { StringBuffer s = new StringBuffer(digits); int zeroes = digits - (int) (Math.log(num) / Math.log(10)) - 1; for (int i = 0; i < zeroes; i++) { s.append(0); } return s.append(num).toString(); }


En el caso de su versión jdk inferior a 1.5, se puede usar la siguiente opción.

int iTest = 2; StringBuffer sTest = new StringBuffer("000000"); //if the string size is 6 sTest.append(String.valueOf(iTest)); System.out.println(sTest.substring(sTest.length()-6, sTest.length()));


Otra opción es usar DecimalFormat para dar formato a su cadena numérica. Aquí hay otra forma de hacer el trabajo sin tener que usar String.format si está atrapado en el mundo pre 1.5:

static String intToString(int num, int digits) { assert digits > 0 : "Invalid number of digits"; // create variable length array of zeros char[] zeros = new char[digits]; Arrays.fill(zeros, ''0''); // format number as String DecimalFormat df = new DecimalFormat(String.valueOf(zeros)); return df.format(num); }


Que tal solo

public static String intToString(int num, int digits) { String output = Integer.toString(num); while (output.length() < digits) output = "0" + output; return output; }