faltou o DecimalFormatSymbols com o Locale “en-US”
[quote=ErickRAR]O seu DecimalFormat está errado. Se você passar um valor como “2.50”, ele irá mudar para 250.
Ou você passa “2,50” ou altera para :
[/quote]
ESSE DecimalFormat é que está errado. Uma vírgula, em um DecimalFormat, é um separador de milhares. Para especificar que o separador de milhares é um ponto e a vírgula ou ponto decimal é uma vírgula, deve-se usar:
// Formato: 2,50
Locale brazil = new Locale ("pt", "BR");
DecimalFormatSymbols dfs = new DecimalFormatSymbols (brazil);
DecimalFormat dateFormat = new DecimalFormat("#,##0.00", dfs);
// Formato: 2.50
Locale us = Locale.US;
DecimalFormatSymbols dfs = new DecimalFormatSymbols (us);
DecimalFormat dateFormat = new DecimalFormat("#,##0.00", dfs);
[quote=entanglement][quote=ErickRAR]O seu DecimalFormat está errado. Se você passar um valor como “2.50”, ele irá mudar para 250.
Ou você passa “2,50” ou altera para :
[/quote]
ESSE DecimalFormat é que está errado. Uma vírgula, em um DecimalFormat, é um separador de milhares. Para especificar que o separador de milhares é um ponto e a vírgula ou ponto decimal é uma vírgula, deve-se usar:
Locale brazil = new Locale ("pt", "BR");
DecimalFormatSymbols dfs = new DecimalFormatSymbols (brazil);
DecimalFormat dateFormat = new DecimalFormat("#,##0.00", dfs);
[/quote]
Mas com o Locale “pt-BR” o resultado vai continuar como está.
EDIT: Ops, respondi antes do edit, podem ignorar essa resposta.
Tá no começo da Activity assim:
public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat(
"###,##0.00", new DecimalFormatSymbols(new Locale("en", "US")));
[quote=fbrigatt]Tá no começo da Activity assim:
[code]
public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat(
"###,##0.00", new DecimalFormatSymbols(new Locale(“en”, “US”)));
[/code][/quote]
Tudo bem, só que na hora de fazer o parse, você instancia um novo DecimalFormat, ou você usar esse DINHEIRO_REAL para fazer o parse, ou adiciona o Locale ao outro.
Aqui que arrumo isso:
DecimalFormat dateFormat = new DecimalFormat("#,##0,00"); // AQUI QUE TROCO? COMO FICA COM ESSA LINHA NOVA QUE POSTOU AI? TO PERDIDO NOS FORMAT
double doubleValue = 0;
try {
doubleValue = dateFormat.parse(valor.trim()).doubleValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tem que instanciá-lo igual instanciou a DINHEIRO_REAL, aliás, pra que serve essa constante?
Cara, não é má vontade não, to perdido mesmo. Num to me achando mais.
Assim:
Locale us = Locale.US;
DecimalFormatSymbols dfs = new DecimalFormatSymbols (us);
DecimalFormat dateFormat = new DecimalFormat("#,##0.00", dfs);
double doubleValue = 0;
try {
doubleValue = dateFormat.parse(valor.trim()).doubleValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
total = qtde * doubleValue;
mas é só instanciar o dateFormat igual instancia o DINHEIRO_REAL, resumindo, do new pra frente os 2 tem que ser idênticos.
Tópico Resolvido. Obrigado.