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.