Zeros a direita

7 respostas
A

Olá pessoal,
é possível através de String.format fazer a inserção de zeros à direita?
Exemplos:
45 --> 45000
233 --> 23300
1 --> 10000

Att.

7 Respostas

E

Não adianta multiplicar por 100, como é o seu caso?

A

Não sei pq usa String para numeros mas tenta isso, acho que e isso que você quer ne?

String numero = "8"; numero =numero.concat("000"); System.out.println(numero);

A

Olá,
o problema é que a quantidade total de caracteres é fixa. Neste caso é 5:
45 --> 45000
233 --> 23300
1 --> 10000

foi resolvido desta forma:

int x=45; String s = "000000"; String sx = (x + s).substring(0,6);

mas queria saber se String.format também pode ser usada neste caso.

Att.

Z

acho que a apache tem aqueles utils que ajuda muito
tem um metodo StringUtils.rightPad que preenche com x 0’s o que vc quiser :smiley:

A

deu minha hora no trabalho cheguei ate aqui =)

DecimalFormat formatter =  new DecimalFormat("00000");
    formatter.setMaximumIntegerDigits(5);
    

 String s = formatter.format(x);

    System.out.println(s);
A
Dá pra resolver com um pouco de matemática também:
private static final int MULTIPLIER = 10;
private static final int MAX_POSITIVE_EXCLUSIVE = 100000;
private static final int MAX_NEGATIVE_EXCLUSIVE = -100000;
private static final String ZERO = "00000";

public static String getAnswer(int number) {
	if (number < 0) {
		while ((number * 10) > MAX_NEGATIVE_EXCLUSIVE) {
			number *= MULTIPLIER;
		}
	} else if (number > 0) {
		while ((number * 10) < MAX_POSITIVE_EXCLUSIVE) {
			number *= MULTIPLIER;
		}
	} else {
		return ZERO;
	}

	return String.valueOf(number);
}

Usar a StringUtils da Apache ou DecimalFormat pode resolver melhor o seu problema (porque desse jeito que fiz, é só rpad).

A

Valeu pessoal,
depois vou fazer uns testes de performance daí posto aqui as conclusões.

Att.

Criado 25 de junho de 2010
Ultima resposta 25 de jun. de 2010
Respostas 7
Participantes 5