Meus amigos,
Executei essa sql no MySql:
insert into pedidos_efetuados (
id_produto, id_categoria, data,
preco, qtd, total, nr_mesa, id_usuario)
values (‘1’,‘1’,‘13/09/12’,‘2,50’,‘3’,‘7.5’,‘7’,‘1’)
Onde está 2,50 esta gravando 2.00
O que fazer pra arrumar? Está como float. No Android mostra o valor num TextView como 2.50
To pegando o valor aqui:
String valor1 = Preco.getText().toString();
E passo como parametro aqui:
parametrosPost.add(new BasicNameValuePair("preco",valor1.toString()));
Qual é o tipo do campo que está no banco? Coloque também um System.out.println para saber se o valor1.toString() está vindo de forma correta.
Talvez o banco esteja esperando 2.50, e não 2,50
E a minha outra pergunta? Tentou que recomendei?
Evite usar float. Use double.
você está gravando um valor 7.5 e o valor com erro é 2,5 talvez o problema seja a vírgula
Sim, com ponto funcionou.
Como faço para formatar com ponto?
será que é aqui?
public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat("###,##0.00");
sim
public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat(
"###,##0.00", new DecimalFormatSymbols(new Locale("en", "US")));
Tiro essa linha:
private static final Locale BRAZIL = new Locale(“pt”,“BR”);
Se utilizar o Locale “pt-BR” ele vai seguir o nosso padrão de formatação, que utiliza a vírgula para separar os decimais.
como você quer utilizar um ponto, pode usar o Locale americano “en-US”
Como ja tem naquela linha então posso tirar, né?
Só que aconteceu algo estranho.
Fui gravar no banco o total gravou 750.00
3 * 2.50 é 7.50
qtde = Integer.valueOf(Quantidade.getText().toString());
Log.i("Quant","Quantidade: " + qtde);
valor = Preco.getText().toString();
Log.i("Preço","Preço: " + valor);
DecimalFormat dateFormat = new DecimalFormat("#,##0.00");
double doubleValue = 0;
try {
doubleValue = dateFormat.parse(valor.trim()).doubleValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
total = qtde * doubleValue;
String Tot;
Tot = String.valueOf(total);
Então o 7.5 que estava errado, tem que usar vírgula pra gravar os decimais.
Agora o por que dele gravar o valor errado, eu não sei.
Olha isso no logCat:
09-13 15:26:26.439: I/Quant(396): Quantidade: 3
09-13 15:26:26.439: I/Preço(396): Preço: 2.50
09-13 15:26:26.449: I/Total(396): Total: 750.0
O valor ta gravando certo. O total que ta fazendo errado.
Será que não tá no decimalFormat?
o DecimalFormat não vai alterar o valor, só a formatação na hora de transformar em String
Porque o total ta errado? O código não ta certo pra fazer o total?
Quantidade: 3
Preço: 2.50
Total: 750.0
qtde = Integer.valueOf(Quantidade.getText().toString());
Log.i("Quant","Quantidade: " + qtde);
valor = Preco.getText().toString();
Log.i("Preço","Preço: " + valor);
DecimalFormat dateFormat = new DecimalFormat("#,##0.00");
double doubleValue = 0;
try {
doubleValue = dateFormat.parse(valor.trim()).doubleValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
total = qtde * doubleValue;
String Tot;
Tot = String.valueOf(total);
e doubleValue tem que valor ?
Ta assim:
Quantidade: 3
Preço: 2.50
Valor doubleValue: 250.0
Total: 750.0
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 :
Vou testar aqui e posto o resultado.
Ainda ta errado:
09-13 16:56:04.013: I/Quant(741): Quantidade: 3
09-13 16:56:04.013: I/Preço(741): Preço: 2.50
09-13 16:56:04.026: I/doubleValue(741): Valor doubleValue: 250.0
09-13 16:56:04.033: I/Total(741): Total: 750.0
qtde = Integer.valueOf(Quantidade.getText().toString());
Log.i("Quant","Quantidade: " + qtde);
valor = Preco.getText().toString();
Log.i("Preço","Preço: " + valor);
// DecimalFormat dateFormat = new DecimalFormat("#,##0.00");
DecimalFormat dateFormat = new DecimalFormat("#,##0,00");
double doubleValue = 0;
try {
doubleValue = dateFormat.parse(valor.trim()).doubleValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
total = qtde * doubleValue;