Função para converter formato de valor monetario

11 respostas
I

Boa tarde amigos,

Estou com uma dúvida, to querendo criar uma função para converter um valor monetario do tipo 99,99, na verdade seria dar um replace neste valor e trocar a virgula por ponto, mas o maior problema que este valor é resultado de uma multiplicação, ou seja não tem um formato padrão… uma hora pode ser 9,99 ou 99,99 ou 999,99 e assim por diante… teria como eu criar uma função que abranja todos estes casos… tipo um replaceAll por exemplo…

Vlw Amigos…

11 Respostas

marcosharbs

aplica uma máscara
DecimalFormat()

I

Tem algum exemplo amigo?

T
String s = "1.234.567,89";
DecimalFormatSymbols dfs = new DecimalFormatSymbols (new Locale ("pt", "BR"));
DecimalFormat df = new DecimalFormat ("#,##0.00", dfs);
double d = df.parse (s);

Desculpe, eu havia esquecido que df.parse retorna um Number, não um double. O correto seria:

String s = "1.234.567,89";
DecimalFormatSymbols dfs = new DecimalFormatSymbols (new Locale ("pt", "BR"));
DecimalFormat df = new DecimalFormat ("#,##0.00", dfs);
double d = df.parse (s).doubleValue();

No seu caso (em que você quer converter uma string em outra string, sei lá por quê), o correto seria:

String s = "1.234.567,89";
DecimalFormatSymbols dfs = new DecimalFormatSymbols (new Locale ("pt", "BR"));
DecimalFormat df = new DecimalFormat ("#,##0.00", dfs);
double d = df.parse (s).doubleValue();
String s = Double.toString (d); // resultado: 1234567.89
I

Amigo, tentei fazer uma função usando o seu código, mas tá dando erro.

public static String converteMoeda(String valor) throws ParseException{
    	    
	    //String s = "1.234.567,89"; 
    	
	    DecimalFormatSymbols dfs = new DecimalFormatSymbols (new Locale ("pt", "BR"));  
	    DecimalFormat df = new DecimalFormat ("#,##0.00", dfs);  
	    
	    double d = (double) df.parse(valor); // Não tá aceitando o cast
	    
	    return d; // Pede para converter o a variavel d para String
    
    }

O que pode ser feito???

Mero_Aprendiz

Dá uma estudada no BrazilUtils.
Não vai arrepender!

:lol:

[]'s
JL

I

Dei uma pesquisada aqui na net e encontrei pouco materia sobre esta API… depois vou procurar mais…

Mas em relação ao meu post, vc tem alguma sugestão ?

Mero_Aprendiz

Uai…

"99,99".replace(".", "").replace(",",".");

Te resolve não?

71C4700

O retorno de seu metedo é uma String e vc ta tentando retorna um double.

bsl.lacerda

E se eu quizesse converter de double 3269.0 para ums string no formato monetário 3.269,00 para exibir dentro de um input no jsp?
Valeu Galera!

thiago.correa
public static void main(String[] args) throws ParseException {
        double valor = 3269.0;
        NumberFormat format = DecimalFormat.getCurrencyInstance(new Locale("pt","BR"));
        format.setMinimumFractionDigits(2);
        
        String valorFormatado = format.format(valor);
        System.out.println(valorFormatado);        
    }

Ta aí a faca e o queijo na mão só falta cortar :wink:

bsl.lacerda

Brigadão Thiago!!!

Criado 25 de fevereiro de 2009
Ultima resposta 17 de jun. de 2009
Respostas 11
Participantes 7