Estou enfrentando um problema com multiplicaçao, o resultado esta me gerando com varias casas após a virgula.
Conforme o código abaixa se eu digitar no tfQuantProd 3 e no tfVlUntProd 4.36 ele me gera um resultado 13.080000000000002 mas gostaria que me apresenta-se somente 13.08. Isto não ocorre sempre, depende dos valores digitados.
Você pode também usar os especificadores de formato no método System.out.printf , que foi introduzido no jdk 5.0, mas para usá-lo você deve ter o java 5.0 instalado e ser estiver usando um IDE como o Eclipse por exemplo deve configurá-lo para compilar par java 5.0.O código fica semelhante a um codigo em C.
A linguagem Java obedece a IEEE-754, por isso do número de casas decimais que não existiam. Enquanto fazes conta, delimite um fator de erro e só no final transforme isso em String(caso necessário).
Esse formato dá erro por causa do Locale, onde ponto é delimitador de decimais e vírgula é de casa de milhar. Isso é coisa de procurar.
Aqui rodou legal! Vê se agora a dúvida se esclarece!
Espero, dessa vez, ter ajudado!
R
rpassos81
Desculpa amigo é que sou bem novo em java, ate ai eu ja consegui fazer e entender, o problema é que o C agora ficou com valor de 13,08 e se eu somar com um double ele da erro, acredito que por causa da virgula. Eu não sei o porque que eu coloco o formato como ###,###.## mas ele coloca 13,08 não teria que ser 13.08?
pedromuyala
Opa desculpa amigo, agora entendi realmente o problema! :oops:
importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;importjavax.swing.JLabel;importjava.text.DecimalFormat;importjava.awt.FlowLayout;classTeste{publicstaticvoidmain(Stringargs[]){JFramejanela=newJFrame("Formatar Número");JPanelpanel=newJPanel(newFlowLayout());janela.add(panel);JTextFieldtfQuantProd=newJTextField("3");JTextFieldtfVlUntProd=newJTextField("4.36");panel.add(tfQuantProd);panel.add(tfVlUntProd);DecimalFormatdecimalFormat=newDecimalFormat(".00");// 00 para manter sempre dois digitos!doublea=Double.parseDouble(tfQuantProd.getText());doubleb=Double.parseDouble(tfVlUntProd.getText());Stringc=decimalFormat.format((a*b)).replace(',','.');JLabeltotal=newJLabel(c);panel.add(total);doubled=Double.parseDouble(c);doublee=1.00;Stringf=decimalFormat.format((d+e)).replace(',','.');;JLabeltotal1=newJLabel("+ 1.00 é = "+f);panel.add(total1);janela.setVisible(true);janela.pack();janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
Lembre-se que DecimalFormat vai arredondar os valores! Arrisque informar o valor unitário do produto 4.367 e a double d com 1.0099!