Formatação de Numeros em Valor Monetários

2 respostas
K

E ai galera!!!

to com o seguinte problema, to realizando a leitura de uma string de um arquivo,
por exemplo ele vem no seguinte formato,

e eu preciso formatar para que pegue o valor e converta pra Double
e fique

70,00

nessa String são 11 caracteres para valor inteiro ([telefone removido]) e 2 para fracionario(00)

2 Respostas

JoaoBluSCBR

Double é double, tem decimal, mas voce nao pode querer que ele só contenha 2 casas, até por que ele é armazenado em forma de potencia e em alguns casos não há potência que deixe exatamente com duas casas decimais.

Converter de String para double tudo bem, basta você fazer um parse do tipo:

Double valor = Double.parseDouble(String numero);

E entao divida por 100 se você sabe que tem duas casas decimais na string original, assim:

valor /= 100;

Mas se quer ele formatado sugiro que use BigDecimal ao invés de double…

Ev3rton

Complementando o que o amigo acima disse.

Se você irá precisar manipular esse número com somente duas casas decimais, então tem que utilizar BigDecimal ao invés de Double, assim você tem o controle de como o arredondamento será feito (RoudingMode).

Exemplo:

new BigDecimal(70.00).setScale(2, RoundingMode.HALF_UP)

Caso você precise apenas exibir o valor, como uma String, você pode usar o NumberFormat.

NumberFormat nf = NumberFormat.getInstance(new Locale("pt", "BR"));
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);

System.out.println(nf.format(70));

A saída será 70, 00.

Espero ter ajudado…

[ ]'s

Criado 8 de setembro de 2011
Ultima resposta 13 de set. de 2011
Respostas 2
Participantes 3