Função para converter formato de valor monetario

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…

aplica uma máscara
DecimalFormat()

Tem algum exemplo amigo?

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

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???

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

:lol:

[]'s
JL

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 ?

Uai…

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

Te resolve não?

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

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!

    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:

Brigadão Thiago!!!