Opa, tenho o seguinte problema, quando fazia uma compra pegava o valor da parcela e dividia pela quantidade da parcela, ai tive o problema como por exemplo, uma compra dar 100 reais e divir por 3, ai as parcelas ficava 33 reais e 33 centavos, de 3 x, correto? Ai pensei em arrendondar esse valor, ai fiz.
public void calcularParcela() {
for (int i = 0; i <= parcelaCompra.getQuantidadeParcela(); i++) {
this.parcelaCompra.setValorParcela((double) Math.round(this.compra
.getPrecoPagar() / i));
}
}
Aqui usei a função Math.round que arrendonda o valor, ai envez de 33.33 vou ter algo como 3 x para 33.00, arredondo minhas parcelas, ai fazendo assim var dar 99 reais, irá passar um real, tá dai peguei a ultima parcela e somei mais 1, ficando assim.
public void adicionarParcelas() {
if (this.parcelaCompra.getQuantidadeParcela() < 0) {
Mensagem.mensagemError("Quantidade da parcela não pode ser menor que 0");
} else if (this.parcelaCompra.getQuantidadeParcela() > 12) {
Mensagem.mensagemError("Quantidade da parcela não pode ser maior que 12");
} else if (this.compra.getPrecoPago() > this.compra.getPrecoTotal()) {
Mensagem.mensagemError("Quantidade paga maior que o valor da compra, verifique com atenção");
} else if ((this.compraPagamento.getQuantidade() == this.compra
.getPrecoTotal())
&& (this.parcelaCompra.getQuantidadeParcela() > 0)) {
Mensagem.mensagemError("Compra a vistá não pode ter parcelas diferente de 0");
} else if (this.parcelaCompra.getQuantidadeParcela() == 0) {
System.out.println("Parcela paga");
this.parcelaCompra.setDataFinal(LocalDate.now());
this.parcelaCompra.setStatusCompra(StatusCompra.PAGO);
parcelasCompras.add(parcelaCompra);
} else {
System.out.println("Parcela pendente");
LocalDate dataHoje = LocalDate.now();
for (int i = 1; i <= parcelaCompra.getQuantidadeParcela(); i++) {
ParcelaCompra pc = new ParcelaCompra();
dataHoje = dataHoje.plusMonths(1);
pc.setDataFinal(dataHoje);
pc.setDiasParcela(parcelaCompra.getDiasParcela());
pc.setQuantidadeParcela(parcelaCompra.getQuantidadeParcela());
pc.setStatusCompra(StatusCompra.PENDENTE);
pc.setValorParcela(parcelaCompra.getValorParcela());
parcelasCompras.add(pc);
}
////// AQUI EU FIZ para ascrecentar um real na minha parcela
if (!compra.getPrecoPagar().equals(
this.parcelaCompra.getValorParcela()
* this.parcelaCompra.getQuantidadeParcela())) {
for (int i = 1; i <= parcelasCompras.size(); i++) {
System.out.println(i);
parcelasCompras.get(parcelasCompras.size() - 1)
.setValorParcela(
parcelaCompra.getValorParcela() + 1);
}
} else {
System.out.println("Caiu fora");
}
}
}
Fazendo assim, eu resolvi uma conta com o valor de 33.33, mais agora ao fazer uma outra conta, se tiver o valor da parcela acima de 33.50 ele irá me arrendondar para 34 reais, a função math ta sendo uma boa escolha aqui? Oque fazer para arrumar essas parcelas com seus valores correto, estou usando o Double, e passando para arrendondar para 34 reais o valor o valor irá passar do valor total da compras e minhas parcelas irão dar errado o valor e irei perder dinheiro assim kk. HELPPPP