Bom dia galera, tenho uma tela aqui que contem 3 textfield, um para quantidade, o outro para preço, e o outro para total que recebe a quantidade x o preço, e um botão chamado calcular, mas to com um problema aqui, caso eu digite 6 ou 7 para quantidade e um preço de 10.95, quando clico no botão calcular o valor total aparece como 99999999, será por que???
vou postar o código que faz o calculo.
int quantidade = Integer.parseInt(tf_quantidade.getText());
double preco = Double.parseDouble(tf_preco.getText());
double total = (quantidade * preco);
[quote=Anderson S.]Bom dia galera, tenho uma tela aqui que contem 3 textfield, um para quantidade, o outro para preço, e o outro para total que recebe a quantidade x o preço, e um botão chamado calcular, mas to com um problema aqui, caso eu digite 6 ou 7 para quantidade e um preço de 10.95, quando clico no botão calcular o valor total aparece como 99999999, será por que???
vou postar o código que faz o calculo.
int quantidade = Integer.parseInt(tf_quantidade.getText());
double preco = Double.parseDouble(tf_preco.getText());
double total = (quantidade * preco);
[/quote]
isso era para dá certo sim, tenta assim:
int quantidade = Integer.parseInt(tf_quantidade.getText());
double preco = Double.parseDouble(tf_preco.getText());
double total = ( quantidade * 1.0 * preco);
tf_total.setText(total+"");
Pelo tipo de erro, dá a impressão que ele está usando:
tf_total.setText ("99999999");
Eu esperaria que aparecesse algo como “65.699999998” ou “65.70000000002” ou coisa parecida. Mas isso parece ser resto de um código de teste que foi posto lá só para ver se estava funcionando
Ai galera eu errei na descrição do enunciado, ta imprindo não é 999999, e sim 76.649999999, caso eu entre com uma quantidade de 7, então o problema é como arredondar esse valor para —>>>76.65 <<<—, isso que tenho que resolver… como eu faço???
Ai galera, foi mal por ter errado no enunciado…
[quote=Anderson S.]Ai galera eu errei na descrição do enunciado, ta imprindo não é 999999, e sim 76.649999999, caso eu entre com uma quantidade de 7, então o problema é como arredondar esse valor para —>>>76.65 <<<—, isso que tenho que resolver… como eu faço???
Ai galera, foi mal por ter errado no enunciado…
Obrigado![/quote]
Se quiser que apareçam 7 casas depois da vírgula, no máximo, faça algo como:
double valor = .....;
DecimalFormat df = new SimpleDecimalFormat ("#0.#######"); // veja que pus 7 "#" depois do "."
tf_total.setText (df.format (valor)); // deve imprimir "76.65" como esperado.
[quote=Anderson S.]Ai galera eu errei na descrição do enunciado, ta imprindo não é 999999, e sim 76.649999999, caso eu entre com uma quantidade de 7, então o problema é como arredondar esse valor para —>>>76.65 <<<—, isso que tenho que resolver… como eu faço???
Ai galera, foi mal por ter errado no enunciado…
Obrigado![/quote]
você pode arredondar usando DecimalFormat, assim:
double valor = 76.649999999;
new DecimalFormat("00,00").format(valor)
Sim. Mas não deixe de ler os artigos que indiquei. É importante compreender bem o problema.
E o double para valores monetários podem gerar imprecisões ainda maiores, na casa dos centavos.
Ai galera, ta convertendo agora, mas ta com um problema, to textfield ta aparcendo 76,65, e ta dando erro por causa da virgula… como faz para não aparecer a vírgula?? e sim um ponto “.”
Cara, multiplicar é bem mais fácil que dividir. O exemplo dado, de divisão, é porque ela é a operação que é de longe a mais complicada de todas; as outras, se você olhar o Javadoc, são muito simples.