é o seguinte: estou trabalhando com uma venda, em que preciso multiplicar a
qtd de créditos pelo valor do crédito (R$ 1,80 * 10), e o resultado dessa multiplicação deve aparecer em um JTextField.
Estou declarando esse valor do crédito como double, mas está ocorrendo um problema, todo vez que tento multiplicar esse valor por 3 ou 9 créditos aparece um resultado imenso no meu JTextField tipo 3.5999999999999996.
Existe alguma forma de eu corrigir isso?
Desde já agradeço a atenção e colaboração de todos
packagecontrole;importcomponentesPadrao.JOptionPadrao;importtelas.frameVenda;publicclasscontrolFrameVendaextendsframeVenda{privateintsaldoDesjejum=10;privateintsaldoAlmoco=12;privatedoublevalorDesjejum=1.20;privatedoublevalorAlmoco=2.30;privatedoublevalorTotDesjejum=0;privatedoublevalorTotAlmoco=0;privatedoublevalorTotCompra=0;privatedoubletroco=0;privatedoublevalorPago=0;publiccontrolFrameVenda(){super();sairEditDesjejum();sairEditAlmoco();carregarValoresTela();sairEditValPago();}publicvoidabrirTela(){}publicvoidclicarCreditar(){}publicvoidsairEditDesjejum(){edtQtdPedDes.addFocusListener(newjava.awt.event.FocusAdapter(){publicvoidfocusLost(java.awt.event.FocusEvente){try{intcreditos=Integer.parseInt(edtQtdPedDes.getText());valorTotDesjejum=calcularValor(valorDesjejum,creditos);edtTotDes.setText(String.valueOf(valorTotDesjejum));alteraValorTotal();}catch(Exceptionf){JOptionPadrao.showMessageDialog(frameEquipamento,"Quatidade inválida.\nQuantidade deve ser um número inteiro!","Informação",1);}}});}publicvoidsairEditAlmoco(){edtQtdPedAlmo.addFocusListener(newjava.awt.event.FocusAdapter(){publicvoidfocusLost(java.awt.event.FocusEvente){try{intcreditos=Integer.parseInt(edtQtdPedAlmo.getText());valorTotAlmoco=calcularValor(valorAlmoco,creditos);edtTotAlmo.setText(String.valueOf(valorTotAlmoco).replace('.',','));alteraValorTotal();}catch(Exceptionf){JOptionPadrao.showMessageDialog(frameEquipamento,"Quatidade inválida.\nQuantidade deve ser um número inteiro!","Informação",1);}}});}publicvoidsairEditValPago(){edtValorPago.addFocusListener(newjava.awt.event.FocusAdapter(){publicvoidfocusLost(java.awt.event.FocusEvente){try{valorPago=Double.parseDouble(edtValorPago.getText().replace(',','.'));if(valorPago>=valorTotCompra){troco=calcularTroco(valorTotCompra,valorPago);edtTroco.setText(String.valueOf(troco).replace('.',','));}else{JOptionPadrao.showMessageDialog(frameEquipamento,"Valor pago não é suficiente!","Informação",1);}}catch(Exceptionf){JOptionPadrao.showMessageDialog(frameEquipamento,"Valor pago inválido.\nValor pago deve ser um número real!","Informação",1);}}});}publicvoidcarregarValoresTela(){edtSaldoDes.setText(String.valueOf(saldoDesjejum).replace('.',','));edtSaldoAlmo.setText(String.valueOf(saldoAlmoco).replace('.',','));edtPrecoDes.setText(String.valueOf(valorDesjejum).replace('.',','));edtPrecoAlmo.setText(String.valueOf(valorAlmoco).replace('.',','));}publicdoublecalcularValor(doublevalor,intcreditos){doublevalor_total=0;valor_total=valor*creditos;System.out.print(valor_total);returnvalor_total;}publicvoidalteraValorTotal(){valorTotCompra=calcularValorTotal();edtValTotCompra.setText(String.valueOf(valorTotCompra).replace('.',','));}publicdoublecalcularValorTotal(){doublevalor_total=valorTotDesjejum+valorTotAlmoco;intdecimais=2;System.out.println(utils.Number.round(valor_total,decimais));returnvalor_total;}publicdoublecalcularTroco(doublevalorTotal,doublevalorPago){doubletroco=valorPago-valorTotal;returntroco;}}
nbluis
Isso é normal, esta é a representação do double,
Faça
doubled=1;System.out.println(d);
e terás uma viagem do gênero.
Deve buscar sobre formatação como o amigo ai encima falou.
Até…
ronnypeterson
Muito obrigado a todos, coloquei uma formatação e resolveu.