Gravando no banco com formato errado valor

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

Campo Float 10,2

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;