Formatação Numérica: Locale e NumberFormat

Java

09/04/2009

Bom dia. Estou usando Locale e NumberFormat para lidar com números.
Locale meuLocal = new Locale( "pt", "BR" );
NumberFormat nfVal = NumberFormat.getCurrencyInstance( meuLocal );
No entanto, quando tento formatar
667407.3
obtenho como resultado
R$ 667.407,31
com 1 centavo a mais. E, pior ainda, quando tento formatar
50110162
obtenho
R$ 50.110.160,00
com 2 reais a menos. O que fazer para corrigir isto? Grato por qualquer ajuda, Helder Arruda
Helder_arruda

Helder_arruda

Curtidas 0

Respostas

Junior.esnaola

Junior.esnaola

09/04/2009

eu testei aqui. com float da os erros q você citou, mas com double dá certinho.
Locale meuLocal = new Locale( "pt", "BR" ); 
		NumberFormat nfVal = NumberFormat.getCurrencyInstance( meuLocal ); 
		double teste = (double) 50110162;
		System.out.println(nfVal.format(teste));
[]s
GOSTEI 0
Vitor Pamplona

Vitor Pamplona

09/04/2009

use as classes BigInteger e BigDecimal para ter mais precisão :D
GOSTEI 0
Vitor Pamplona

Vitor Pamplona

09/04/2009

Alterando pra Double funcionou bem, valeu! Sds, Helder Arruda
GOSTEI 0
POSTAR