Java.lang.NumberFormatException

cara, de nada adianta usar o pattern correto no DecimalFormat se você não utiliza ele, tem que utilizá-lo na conversão:DecimalFormat dateFormat = new DecimalFormat("#,##0.00"); double valorDouble = dateFormat.parse(valor.trim()); total = qtde * valorDouble;

Vou ja testar e posto, um momento. Obrigado pela dica.

Erro nesse trecho:

= dateFormat.parse(valor.trim());

Type mismatch: cannot convert from Number to double

a classe Number tem um método que retorna um tipo mais específico, Number.xxxValue(), existe um para cada subtipo.

no seu caso use doubleValue();

Como arruma isso?

Seria assim:

double valorDouble = Double.valueOf(valor.trim());

o método parse retorna um Number, portanto você precisa transformá-lo no tipo específico que quer, pode fazer um cast, ou usar os métodos que ele te disponibiliza. Number number = decimalFormat.parse(valor.trim()); double doubleValue = number.doubleValue(); Isso é a mesma coisa que fazer: double doubleValue = decimalFormat.parse(valor.trim()).doubleValue(); Você é novo em Java?

Mais ou menos. To aprendendo aos poucos.

Tá dando erro na linha:

  double doubleValue = decimalFormat.parse(valor.trim()).doubleValue();  
  total = qtde * valorDouble;  

decimalFormat e valorDouble

decimalFormat cannot be resolved
valorDouble cannot be resolved to a variable

decimalFormat tem que ser substituído pela sua instância de DecimalFormat

e o doubleValue é o que você vai usar na multiplicação.

Fiz assim e funcionou:

 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;  

Se quiser no formato tipo 35.00, como faz? Tá fazendo assim 35.0

Como é um tipo numérico, pouco importa se ele é 35.0 ou 35.00, pois os dois possuem o mesmo valor.

Agora se quiser formatar para a view, precisa transformá-lo de novo em String.

Ok, como faria para converter em string novamente, só para saber.

Como converter o total do código abaixo para String?


 DecimalFormat dateFormat = new DecimalFormat("#,##0.00");  
 double doubleValue = 0;
 try {
    doubleValue = dateFormat.parse(valor.trim()).doubleValue();
 } catch (ParseException e) {
    e.printStackTrace();
 }  
  total = qtde * doubleValue;  

[quote=fbrigatt]Como converter o total do código abaixo para String?

[code]

DecimalFormat dateFormat = new DecimalFormat("#,##0.00");
double doubleValue = 0;
try {
doubleValue = dateFormat.parse(valor.trim()).doubleValue();
} catch (ParseException e) {
e.printStackTrace();
}
total = qtde * doubleValue;
[/code][/quote]
Use o método format.

Eu sugiro que leia a API da classe DecimalFormat, vai te poupar muita dor de cabeça.

Opa, fiz assim, pode ser:

Tot = String.valueOf(total);

Uma pergunta a mais, como gravo data? Pode ser assim:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.applyPattern("yyyy-MM-dd");

Isso aí já é uma dúvida pra outro tópico :slight_smile: marque esse como resolvido se não tem mais dúvidas relacionadas ao assunto inicial do tópico, e se não encontrar o que quer relacionado às datas, abra um tópico novo

To ficando loko, meu amigo. No MySql o campo preço ta como decimal, 10,2 o valor, correto? Tenho um valor cadastrado lá com 2.50. Mostra na tela 2.50 num TextView e faço até a conta multiplicando pela quantidade, ok.

Quando vou gravar o preço no banco ele grava 2.00

Que to fazendo de errado?

To pegando o valor aqui:

String valor1 = Preco.getText().toString();

E passo como parametro aqui:

parametrosPost.add(new BasicNameValuePair("preco",valor1.toString()));

Ajuda que ja não sei o que fazer mais, por favor.

O problema ta no banco ou no código? To perdido.

Não sei, que valor vem nesse valor1.toString() ?

como você disse que envia o valor para ser persistido pelo PHP, o problema pode estar lá.

quando você recupera do outro lado, o valor está correto?

Valor1 é a captura do preço no TextView. Entendeu?

O php é esse:

<?php
  //$usuario=$_GET['usuario'];
  //$senha  =$_GET['senha'];
  $id_produto=$_POST['id_produto'];
  $id_categoria =$_POST['id_categoria'];
  $data =$_POST['data'];
  $preco  =$_POST['preco'];
  $qtd=$_POST['qtd'];
  $total  =$_POST['total'];
  $nr_mesa=$_POST['nr_mesa'];
  $id_usuario  =$_POST['id_usuario'];

  $conexao = mysql_connect('localhost','root','');
  mysql_select_db('bdfss',$conexao);

  $sql = "insert into pedidos_efetuados (
          id_produto, id_categoria, data,
          preco, qtd, total, nr_mesa, id_usuario)
          values ('$id_produto','$id_categoria','$data','$preco','$qtd','$total','$nr_mesa','$id_usuario')";

  $resultado = mysql_query($sql) or die ("Erro .:" . mysql_error());

  if($resultado)
      echo "1";
  else
      echo "0";

?>