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
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";
?>