Soma de valor negativo no BigDecimal

Prezados,

Estou dando manutenção em um extrato que recebe valores negativos e esperava que quando chegasse o valor negativo + negativo ele somasse e manteria o valor negativo estou usando BigDecimal e na formula indicada abaixo quando o valor vem negativo ele esta zerando e o calculo final fica errado:
BigDecimal totalRendimentos = totalAtualizacao.subtract(totalAnterior.add(contribuicoes));

contribuicoes é o valor quem deveria vir com a soma negativa.

Procurei uns tutoriais e so encontrei o que ja temia que o bigdecimal não soma negativo ele acaba zerando. vocês conhecem outra forma de respeitar essa informação?

Tentei simular um cenário para esse trecho de código q vc postou:

BigDecimal totalAtualizacao = new BigDecimal("10");
BigDecimal totalAnterior = new BigDecimal("5");
BigDecimal contribuicoes = new BigDecimal("-3");
BigDecimal totalRendimentos = totalAtualizacao.subtract(totalAnterior.add(contribuicoes));

System.out.println(totalRendimentos); // Dá 8, pois: 10 - (5 + (-3)) = 8

Veja o cálculo para chegar no resultado 8. O que vc acha?

1 curtida

Lucas acredito que se o valor chegar negativo da maneira exemplificada por você da o resultado porque não são todos os cliente que reclamam. mas vou acrescentar aqui o trecho onde é feito a soma no caso dos valores negativos.
Seria assim:

BigDecimal A = new BigDecimal("-3");
BigDecimal B = new BigDecimal("-3");
BigDecimal contribuicoes = A.add(B);// aqui espero que dê -6 (seis negativo)

Dessa forma, esse código realmente retorna -6 em contribuicoes. Para vc dá um resultado diferente?

sim ele esta zerando então no caso ele só faz a subtração inicial.

Estranho que eu executei aqui e retornou -6, e não zero.

Posta o seu código inteiro.