Saída formatada, completando com 0's

12 respostas
G

Tenho um inteiro, e desejo que ele seja exibido com no mínimo duas casas decimais (completando com 0’s a esquerda.
Por exemplo:
Para o inteiro 5, exibo 05

Em C posso fazer:

printf("%.2d",5);

em java, como ficaria?

valeu

12 Respostas

Andre_Rosa

Use o método System.out.printf:

System.out.printf("%.2d",5);
E

gabriellm:
Tenho um inteiro, e desejo que ele seja exibido com no mínimo duas casas decimais (completando com 0’s a esquerda.
Por exemplo:
Para o inteiro 5, exibo 05

Em C posso fazer:

printf("%.2d",5);

em java, como ficaria?

valeu

Em C você não usa “%.2d” e sim “%02d” (note o algarismo zero).

Em Java é exatamente a mesma coisa - use “%02d”.

G

como não se trata de Java, pode dar diferente no windows… mas aqui no linux funciona das duas maneiras para numeros inteiros. Para numeros reais, dessa maneira eu estaria especificando o numero de casas decimais. Estou enganado?

@edit
me refiro a maneira que eu propus

E

De fato, de acordo com http://www.cplusplus.com/reference/clibrary/cstdio/printf/ , você está certo.

Entretanto, a maneira “padrão” (ou seja, que não vai fazer ninguém que está acostumado a trabalhar com C precisar procurar no Google se está certo ou não) de indicar que você vai completar um número com zeros à esquerda é com o modificador 0.
É que a precisão tem significados parecidos, mas diferentes para %d, %f e %s.
Pela lógica eu acharia que printf ("%.2d", 9) iria imprimir “9.00”, não “09”, embora saibamos que um inteiro não é promovido para nenhum tipo de ponto flutuante em um “varargs”, tal como o usado pelo printf.

X
public class CasaAEsquerda {

	
	public static void main(String[] args) {
		Integer num = new Integer (10);
		String strnum = "";
		System.out.println("O numero inteiro digitado =>" + num);
		strnum = "00" + num.toString();
		System.out.println("A string do numero com zeros a esquerda é =>" + strnum);
		
	}

}
G
xande.boy:
public class CasaAEsquerda {

	
	public static void main(String[] args) {
		Integer num = new Integer (10);
		String strnum = "";
		System.out.println("O numero inteiro digitado =>" + num);
		strnum = "00" + num.toString();
		System.out.println("A string do numero com zeros a esquerda é =>" + strnum);
		
	}

}

faz sentido para um numero pequeno de 0's

@edit

aliás, se eu entendi bem, esse código vai adicionar dois 0 a todos os numeros não?

T

Paz para todos. Muito interessante a questão levantada neste topico, pois esta semana me deparei com a necessidade de resolver um problema semelhante. Num sistema de cadastro, no formulario , mas especificamente um JTextField onde é mostrado o ID , o cliente me pediu para mostrar o numero do registro com um 0 a esqueda, e ainda estava pensando em como poderia fazer isso. Sera que algum amigo do forum poderia esplanar um pouco mais , para eu ter uma ideia do que fazer?

igor_ks

Use o String.format

int numero = 1;
String msg = String.format("%02d", numero);
System.out.println(msg);
//Retorna 01

numero = 10;
msg = String.format("%02d", numero);
System.out.println(msg);
//Retorna 10
T

Estou mostrando o numero usando:

int codigo = c.buscarCodigoUltimoAtendimento() +1;
         
         String msg = String.format("%02d", codigo); 

         pront.setText(msg);

mas não funcionou, não da erro, mas não mostra o numero com zero a esquerda.

igor_ks

qual o valor do codigo que esta vindo?
pq esse 02 vai pegar sempre com 2 casas, se tiver 28, nao vai vir 028, e sim somente 28

T

Seia um numero com 8 digitos…
Então eu deveria usar “%08d”?

T

A ficha caiu, :lol: , funcionou, vlw pela paciência.

Criado 19 de outubro de 2011
Ultima resposta 20 de out. de 2011
Respostas 12
Participantes 6