Dúvida sobre DecimalFormat!

3 respostas
andre_bento

Olá amigos…
Estou com um prbleminha aqui que não to sabendo como posso fazer para acabar com ele…
Bom é o seguinte…
Estou pegando dados de uma pendência do usuário… (dívida)… depois estou pegando o quanto o usuário quitou da dívida…
Por exemlo…devia 15.50 e pagou 10.00… fica uma dívida ainda de 5.50
O programa tá rodando muito bem… só que estou usando o seguinte código para limitar as casas decimais…

DecimalFormat aproximador = new DecimalFormat( " 0.00 " );  
		String preco;
		preco = aproximador.format(precoFinal);
                                txtValorFinal.setText(preco);

O código acima está rodando muito bem… mas o problema é que ele guarda no BD o preço no formato 5,50 … ele separa os centavos com uma vírgula… o que está me gerando erro na hora de fazer cálculos com o valor final da pendência…Pois se ainda tem uma dívida ele tem que pagá-la… mas não tem como fazer o cálculo com essa bendita vírgula ae…
O que os amigos acham que posso fazer…Como faço para limitar as casas decimais mas separando os centavos por pontos!
Estava pensando em usar a classe Math.round… mas não gosto muito do arredondamento dessa classe…

Um abraço a todos!!!

3 Respostas

marciofermino

tente assim:

public String sem_real2(String valor) {


        Locale l = new Locale("pt", "BR");
        NumberFormat nf = NumberFormat.getCurrencyInstance(l);
        Number numero = null;


        valor = "R$ " + valor;
        try {
            numero = nf.parse(valor);
        } catch (ParseException ex) {

        }

        double numeroNovo = numero.doubleValue();

        return String.valueOf(numeroNovo);
    }
wbdsjunior

[quote=marciofermino]tente assim:

Locale l = new Locale("pt", "BR");

isso não irá formatar o valor com “,”? acho que o correto seria usar “en” “US”, não?

ambuzr

olha um metodo ai que eu fiz

public Double ValorStringParaDouble(String alterar){//vai pro banco assim

Double valor=null;        

if(alterar == null || alterar.equals(""))
            valor = 0.0;
        else
            valor = Double.parseDouble(alterar.replace(".", "").replace(",", "."));
        
        
        
        return valor;
    }
    
    public String ValorDoubleParaStringMonetario(Double alterar){//volta do banco fica assim
        DecimalFormat  formatador  = new DecimalFormat();
        String  valorMonetario = null;
        formatador.setMinimumFractionDigits(2);
        
        if(alterar == null || alterar == 0.0)
            valorMonetario = "";
        else
            valorMonetario = formatador.format(alterar); 
        
        return valorMonetario;
    }

exemplo

String valor = "15,32";

System.out.println(ValorStringParaDouble(valor));

resultado: 15.32


Double valorDouble = 15.32;

ValorDoubleParaStringMonetario(valorDouble );
resultado: 15,32
Criado 17 de dezembro de 2008
Ultima resposta 17 de dez. de 2008
Respostas 3
Participantes 4