Bonjour,

J'ai un problème dans une multiplication de 2 doubles en Java. Il ne me calcul pas le bon résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
double d1 = 663.75;
double d2 = 1.196;
System.out.println(d1*d2);
Renvoie : 793.8449999999999 au lieu de 793.845

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
java.math.BigDecimal bg = new java.math.BigDecimal(663.75d);
java.math.BigDecimal bg2 = new java.math.BigDecimal(1.196d);
System.out.println(bg.multiply(bg2));
Renvoie : 793.844999999999968165464991898261359892785549163818359375

Pourquoi cela, et comment avoir un bon chiffre ? J'ai pensé à ajouter 0.0000001 mais je trouve cela bizarre qu'il ne soit pas capable de calculer juste au dela de 3 pauvres décimales.

Environnement : Windows, JDK 1.5.0_15, TomCat 5.5

Merci pour votre aide.