Addition avec des variables "double"
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.
Code:
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));
}
}
} |
Merci de me guider vers la solution.