Bonjour,
J'ai fait différentes recherches mais je ne suis pas vraiment parvenu à comprendre les réponses (souvent en relation avec BigDecimal).
Ci-dessous un petit moteur de calcul pour une calculatrice. Lorsque j'ajoute le "double" 12,22 au "double" 0,22, j'obtiens le résultat 0,44. De même 12,22 + 24,56 me donne 49,12.
J'ai bien compris que c'était un problème de format de variable mais je ne parviens pas à m'en sortir.
Merci de me guider vers la solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JOptionPane; import javax.swing.JButton; import javax.swing.JTextField; import java.text.NumberFormat; import java.text.ParsePosition; import java.text.DecimalFormat; public class MoteurTest1 implements ActionListener { Test1 parent; NumberFormat formatNombres = NumberFormat.getInstance(); MoteurTest1(Test1 parent){ this.parent=parent; } /** * @param args */ public void actionPerformed(ActionEvent événement) { // TODO Auto-generated method stub // Retrouve la source de l'action JButton boutonClic = (JButton) événement.getSource(); String texteChampAffichage = parent.champAffichage.getText(); int verifF; double result = 0; DecimalFormat df = new DecimalFormat("0.00"); result = formatNombres.parse(texteChampAffichage,new ParsePosition(0)).doubleValue(); Object sourceEvénement = événement.getSource(); //Pour chaque bouton d'action, mémorise l'action //sélectionnée, +, -, /, ou *, stocke la valeur courante //dans la variable résultatCourant et vide le champ //Affichage avant l'entrée du nombre suivant if (sourceEvénement == parent.boutonPlus){ verifF = texteChampAffichage.indexOf(",,"); if(verifF<0) { parent.champAffichage.setText(""); System.out.println("+ "+result); } else if (verifF>=0){ parent.champAffichage.setText("ERREUR - présence de plusieurs virgules"); } } else if (sourceEvénement == parent.boutonEgale){ result += (formatNombres.parse(texteChampAffichage,new ParsePosition(0)).doubleValue()); parent.champAffichage.setText(formatNombres.format(result)); System.out.println("= "+df.format(result)); } } }
Partager