Problema com arredondamento de valor

Olá a todos. Tenho o seguinte método para limitar o número de de casas decimais de um valor float(já tentei com double, mas também não deu certo):

public float formataNumeros(float valor){ DecimalFormat df = new DecimalFormat("0,00"); df.setMaximumFractionDigits(2); df.format(valor); float valorFormatado = valor; return valorFormatado; }

… e no meu botão que calcula o número de parcelas de uma compra, está o seguinte código:

[code]if(tfParcelas.getText().equals("")){
JOptionPane.showMessageDialog(null, “ERRO: Campo “PARCELAS” vazio.”, “ERRO”, JOptionPane.ERROR_MESSAGE);
}

else{
float valorDivida = Float.parseFloat(tfValorDivida.getText());
int numParcelas = Integer.parseInt(tfParcelas.getText());
float valorParcelas = (valorDivida / numParcelas);
formataNumeros(valorParcelas);
labelParcelas.setText("" + valorParcelas);
}[/code]

Por exemplo, quando digito o valor 9998 e divido em 7 parcelas, o resultado que é exibido em meu JLabel é 1428.2858, sendo que eo especifiquei que só eram permitidas 2 casas decimais. Onde é que estou errando?

Grato pela atenção.

Repita comigo: nunca mais vou usar float para fazer contas; sempre usarei double ou BigDecimal.
Repita comigo: nunca mais vou usar float para fazer contas; sempre usarei double ou BigDecimal.
Repita comigo: nunca mais vou usar float para fazer contas; sempre usarei double ou BigDecimal.

E depois de repetir isso, veja que você arredondou o valor (OK) mas não usou o valor retornado por “formataNumeros”.

float valorParcelas = (valorDivida / numParcelas);  
formataNumeros(valorParcelas);  
labelParcelas.setText("" + valorParcelas);  

Note que no seu código não há nenhum lugar onde você atribua o valor arredondado a “valorParcelas”. Mais atenção…

Hum… o melhor mesmo é isto aqui:

    public double formataNumeros(double valor){
        DecimalFormat df = new DecimalFormat("#,##0.00");
        return df.format (valor);
    }
...

labelParcelas.setText(formataNumeros (valorParcelas));  

Opa, funcionou perfeitamente.

Alterei o tipo para double e usei o método Math.rint().

Agora ele arredonda corretamente.

Muito obrigado.