Formatando com NumberFormat ou DecimalFormat

5 respostas
Duende_Macabro

Pessoal, ja pesquisei e não acho então rapido e rasteiro: eu tenho numeros com 5 posicoes tipo 78945 e as casas deles sempre são 3 inteiros e 2 decimais 789,45. Qual seria o padrão pra formatar assim?

Obrigado.

5 Respostas

von.juliano

Dá uma olhada na classe DecimalFormat:

http://java.sun.com/j2se/1.5.0/docs/api/

T

Se você tem um valor em centavos e precisa formatar em reais, divida por 100, e use um DecimalFormat:

NumberFormat nf = new DecimalFormat ("#,##0.00", new DecimalFormatSymbols (new Locale ("pt", "BR")));
double valor = 78945;
System.out.println (nf.format (valor / 100));
von.juliano

[APAGADO]

rodrigo_salla

Prezado Duende Macabro…

DecimalFormat é uma boa classe assim como NumberFormat com seus metodos getCurrencyInstance() para $$$$$, getNumberInstance() numeros…

Rodrigo

josimarsis
Galera consegui resolver esta ai o metodo! Obrigado a todos...
//Converte uma String para o formato de um BigDecimal
    public static BigDecimal ConvertStringValueToBigDecimal(String numero, Integer qtdeCasasDecimais) {
        String casasDecimais = "";
        String num = numero;
        DecimalFormat df = null;
        try {
            if (qtdeCasasDecimais > 0) {
                for (int i = 0; i < qtdeCasasDecimais; i++) {
                    casasDecimais = casasDecimais.concat("0");
                }
                if (num.equals("")) {
                    num = "0.".concat(casasDecimais);
                }
                df = new DecimalFormat("#,##0.".concat(casasDecimais), new DecimalFormatSymbols(new Locale("pt", "BR")));
                df.setParseBigDecimal(true); // aqui o pulo do gato
                df.setRoundingMode(RoundingMode.DOWN);
                return (BigDecimal) df.parse(num); // deve voltar o BigDecimal "1234.56"
            } else {
                if (num.equals("")) {
                    num = "0";
                }
                df = new DecimalFormat("###########");
                df.setParseBigDecimal(true);
                df.setRoundingMode(RoundingMode.DOWN);
                return new BigDecimal(((BigDecimal) df.parse(num)).intValue());
            }

        } catch (ParseException ex) {
            Logger.getLogger(Utilitarios.class.getName()).log(Level.SEVERE, null, ex);
            return new BigDecimal("0");
        }
    }
Criado 6 de fevereiro de 2007
Ultima resposta 13 de nov. de 2009
Respostas 5
Participantes 5