Re: [addition de Double] Enigme !!
Citation:
Envoyé par badjojo
Bonjour,
Je m'adresse à la communauté car un problème m'empêche de dormir en ce moment... je n'arrive pas à comprendre.
Voici le bout de code fautif:
Double d1 = new Double(6.33);
Double d2 = new Double(6.33);
Double d3 = new Double(10);
double d4 = d3.doubleValue() + d1.doubleValue() + d2.doubleValue();
System.out.println("" +d4);
J'obtiens 22.65999999999999997 au lieu de 22.66 !!!!!!!!
Par contre si je fais:
double d4 = d1.doubleValue() + d2.doubleValue() + d3.doubleValue();
J'obtiens le bon résultat, 22.66 (j'ai d'abord ajouté le 10)
Après avoir fait différents tests et cherché, je ne trouve pas l'explication..
Alors je m'en remets à vos avis d'experts!!
Merci!
tu as essayé avec du transtypage :
d4=(double)d1+(double)d2+... ?
ou tout simplement :
d4=d1+d2+d3
puisque tes données sont de même type
cette erreur provient en général d'une imprecision due à la conversion float -> double ou double -> double
pour éviter ces problèmes il faut éviter au maximum de passer d'un type de données à un autre même si ce type reste le même !
Un post a été résolu sur un sujet similaire concernant le PHP...
++