Erro em cálculo Java

2 respostas Resolvido
androidjava
C

Olá, estou com um projeto de uma calculadora de consórcio que está apresentando erro. Ela recebe do usuário os seguintes dados:

Valor do consórcio
Quantidade de meses
% do fundo de reserva
% da taxa administrativa
Após isso ele calcula o valor da parcela mensal.

O meu problema é o seguinte: Se eu colocar a quantidade de meses 10 funciona se colocar 15 já dá erro.

Segue o código:

BigDecimal cota = new BigDecimal(jTextField1.getText());

BigDecimal prazo = new BigDecimal(jTextField2.getText());

BigDecimal reserva = new BigDecimal(jTextField3.getText());

BigDecimal adm = new BigDecimal(jTextField4.getText());

DecimalFormat decimal = new DecimalFormat(“0.##”);

//Calculo Fundo Comum

BigDecimal pc = new BigDecimal(100);

BigDecimal percentualMensal = pc.divide(prazo);

BigDecimal parcelaMensal = percentualMensal.multiply(cota);

BigDecimal parcelaMensal1 = parcelaMensal.divide(pc);
//Calculo Taxa Administrativa

BigDecimal a1 = adm.divide(prazo);

BigDecimal parcelaAdm = a1.multiply(cota);

BigDecimal parcelaAdm1 = parcelaAdm.divide(pc);
//Calculo Fundo Reserva

BigDecimal r1 = reserva.divide(prazo);

BigDecimal parcelaReserva = cota.multiply(r1);

BigDecimal parcelaReserva1 = parcelaReserva.divide(pc);

BigDecimal calculo = parcelaMensal1.add(parcelaAdm1.add(parcelaReserva1));

String a = decimal.format(calculo);

jLabel5.setText("Valor: "+a);

2 Respostas

SamuelLira99

Tente trocar:
String a = decimal.format(calculo);

por:
String a = String.valueOf(decimal.format(calculo));

C
Solucao aceita

Obrigado pela ajuda, pude analisar que a parte do código de divisão pelo prazo estava dando uma dízima periódica infinita. Por isso o erro ao dividir por 15, então um colega de outro grupo me passou a solução.
Importando a biblioteca java.math.* e usando os parâmetros RoundingMode.HALF_UP consegui resolver, ficando assim a linha de divisão do prazo:

BigDecimal percentualMensal = pc.divide(prazo, 4, RoundingMode.HALF_UP);

Inseri os parâmetros de todas as divisões do código e funcionou beleza.

Criado 27 de outubro de 2017
Ultima resposta 28 de out. de 2017
Respostas 2
Participantes 2