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
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
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());
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());
BigDecimal bg = new BigDecimal(0);
bg = bg.add(.multiply(new BigDecimal(10.0)new BigDecimal(2)));
System.out.println(bg.doubleValue());
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.