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…
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
}