Problemas com multiplicação de tipo inteiro com tipo double
19 respostas
A
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.
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.
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.[telefone removido]” ou coisa parecida. Mas isso parece ser resto de um código de teste que foi posto lá só para ver se estava funcionando
ViniGodoy
O que pode estar é imprimindo isso, mas o TextField ser pequeno, alinhado a direita e o resto do número estar escondido.
A
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!
F
faelz1n
recomendo você usar a perpectiva de debug para verificar o que acontece no seu código.
ou então posta o código para podermos verificar.
E
entanglement
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!
Se quiser que apareçam 7 casas depois da vírgula, no máximo, faça algo como:
doublevalor=.....;DecimalFormatdf=newSimpleDecimalFormat("#0.#######");// veja que pus 7 "#" depois do "."tf_total.setText(df.format(valor));// deve imprimir "76.65" como esperado.
pczardini
Tenta fazer um casting de INT sobre a chamada… talvez funcione!
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!
você pode arredondar usando DecimalFormat, assim:
double valor = 76.649999999;
new DecimalFormat("00,00").format(valor)
A
Anderson_S
vou testar;;
ViniGodoy
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.
E
entanglement
Sim senhor, é que não fiquei olhando seu programa com muita atenção. Pus um nome qualquer (pelo menos não usei “x” ) e confiei em você.
A
Anderson_S
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 “.”
E
entanglement
doublevalor=.....;DecimalFormatSymbolsdfs=DecimalFormatSymbols.getInstance(Locale.US));DecimalFormatdf=newDecimalFormat("#0.#######",dfs);tf_total.setText(df.format(valor));// deve imprimir "76.65" como esperado.
F
faelz1n
double valor = 76.649999999;
new DecimalFormat("00.00").format(valor)
Nesse artigo tem um exemplo de dividir, utilizando bigDecimal, como faz para miltiplicar utilizando ele??
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.