Problema
Se parcelarmos o valor R$ 15,00 em 8x teríamos cada parcela no valor de 1,875.
Se formatar para 2 casas para exibir ao usuário ficamos com 1,88.
Porém 8 x 1,88 dá 14,40... como resolver?
Solução
Temos que arredondar em float o valor da parcela, a na última colocamos o valor da diferença
Código
class Teste {
public static float arredonda2Casas(float entrada) {
return (float) (Math.round(entrada * 100.0f) / 100.0f);
}
public static void doDivisao(float valor, int parcelas) {
float parcela = Teste.arredonda2Casas(valor / parcelas);
float soma = 0f;
for (int i=1; i<=parcelas; i++) {
if (i < parcelas) {
System.out.println("Parcela " + i + ": " + parcela);
soma += parcela;
}
else {
float ultima = Teste.arredonda2Casas(valor - soma);
System.out.println("Parcela " + i + ": " + ultima);
soma += ultima;
}
}
System.out.println(soma);
}
public static void main(String[] args) {
Teste.doDivisao(15f, 8);
}
}