Arredondamento e formatação

6 respostas
Danilo_neco

Pessoal,
estou com algumas dificuldades com o BigDecimal e Double

String valorLimite = "1.322,12"
String valorFormatado = valorLimite.replace(",", ".");
Double valor1 = Double.valueOf(valorFormatado);
		
BigDecimal valor = new BigDecimal(valor1);

medicamentoAltoCustoConvenioVO.setValorLimite(valor);

recebo um java.lang.NumberFormatException

6 Respostas

CristianPalmaSola10

Primeiro poste codigo entre as tags [code]

Segundp em que momento acontece o erro

Terceiro da uma olhada na NumberFormatter ela deve resolver o seu problema

Rodrigo_Sasaki

o erro que acontece é simples, você está tentando instanciar um novo Double com a String “1.322.12”

o problema é que no Java, por padrão o . é o separador de decimal, e na sua String existem 2, por isso ele se perde.

você pode ou usar classes como o DecimalFormat, ou remover todos o ponto da String antes de substituir as vírgulas por ponto, é bem deselegante, mas funciona :slight_smile: algo assim:String valorFormatado = valorLimite.replace(".","").replace(",", ".");

E

http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html

String valorLimite = "1.322,12";
DecimalFormatSymbols dfs = new DecimalFormatSymbols (new Locale ("pt", "BR"));
DecimalFormat df = new DecimalFormat ("#,##0.00", dfs);
df.setParseBigDecimal (true);

BigDecimal valor = (BigDecimal) df.parse (valorLimite);
  
medicamentoAltoCustoConvenioVO.setValorLimite(valor);
E

Nunca misture BigDecimal com double - ele pode lhe causar problemas muito esquisitos.
Em particular, se precisar inicializar um BigDecimal a partir de um double, converta esse double para uma String usando o arredondamento adequado, e então converta a String para um BigDecimal. Não converta diretamente um double em um BigDecimal, apesar de o Java deixar, já que o resultado será muito esquisito.

Danilo_neco

Valeu Galera do GUJ !! Tirei minha dúvida e apreende mais.

E

Só para te encher o saco, já que você quer aprender alguma coisa.

Aprender = to learn = compreender = é o que você quer fazer, aprender Java.

Apreender = to grasp, to aprehend = pegar, tomar - Por exemplo: A Polícia Federal apreendeu alguns milhares de CDs piratas.

Criado 16 de julho de 2012
Ultima resposta 16 de jul. de 2012
Respostas 6
Participantes 4