Arredondar número para 2 casas

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(15f8); 

 

  }

 

}