BigDecimal não soma

4 respostas
wilsontads

Estou executando o seguinte método:

BigDecimal bg = new BigDecimal(0); bg.add(new BigDecimal(10.0 * 2)); System.out.println(bg.doubleValue());

No final, a saída é 0.0, eu esperava que fosse 20.0

4 Respostas

pmlm

Tal como a String, BigDecimal é imutável.
As operações não são efectuadas sobre o próprio objecto mas é criado um novo objecto, que é devolvido pelo método.

BigDecimal bg = new BigDecimal(0);  
    bg = bg.add(new BigDecimal(10.0 * 2));   // o resultado da operação é atribuído a bg. Assim já vai imprimir 20
    System.out.println(bg.doubleValue());
Rodrigo_Sasaki

BigDecimal, como String e as classes Wrapper é um objeto imutável, ou seja, você não pode alterar o valor dele.

pra conseguir o resultado esperado, você tem que atribuir o retorno do método add a uma variável.BigDecimal bg = new BigDecimal(0); bg = bg.add(new BigDecimal(10.0 * 2)); System.out.println(bg.doubleValue());

Zeovaldo

BigDecimal bg = new BigDecimal(0);

bg = bg.add(new BigDecimal(10.0).multiply(new BigDecimal(2)));

System.out.println(bg.doubleValue());

wilsontads

digaoneves:
BigDecimal, como String e as classes Wrapper é um objeto imutável, ou seja, você não pode alterar o valor dele.

pra conseguir o resultado esperado, você tem que atribuir o retorno do método add a uma variável.BigDecimal bg = new BigDecimal(0); bg = bg.add(new BigDecimal(10.0 * 2)); System.out.println(bg.doubleValue());

Perfeito, muito obrigado.

Criado 25 de setembro de 2012
Ultima resposta 25 de set. de 2012
Respostas 4
Participantes 4