cs_mouic
Messages postés13Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 2 octobre 2009
-
6 juil. 2009 à 12:19
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
6 juil. 2009 à 14:26
Bonjour ,
je rencontre un problème assez contrariant au sujet des types double.
J'ai une variable double nommée total.
Je lui ajout une première valeur: 168.35284300.
Jusqu'ici pas de problème...
Je lui ajoute ensuite : 1112.04013295 .
Et là ma variable total prend la valeur : 1280.39297595 00002.
00002 apparait alors qu'il n'y a aucune raison...
C'est assez contraignant car si je soustrais mes deux valeurs je me retrouve avec un 1E14 en trop...
J'utilise Visual Studio 2008 mon OS est Windows Vista 64bits c'est peut être du au 64bits...
Merci d'avance pour vos réponses
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 6 juil. 2009 à 12:32
Hello,
C'est sans doute du à l'imprécision du type double, qui est un nombre à virgule flottante (cf. http://fr.wikipedia.org/wiki/Nombre_flottant, partie précaution d'emploi).
Si tu veux avoir une meilleure précision, utilise le type decimal, mais il est plus gournad en mémoire.
Amicalement, SharpMao
"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 6 juil. 2009 à 12:25
Assure toi que TOUS tes nombres sont des doubles. Le soucis vient probablement que l'un de tes nombres (le deuxieme a priori, vu que cest la que le soucis ressort) est un float et non un double
cs_mouic
Messages postés13Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 2 octobre 2009 6 juil. 2009 à 12:50
Niquel! OK pour le type decimal, merci beaucoup!
C'est quand même embêtant cette histoire de double... Heureusement que je ne développais pas une appli pour Airbus...
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 6 juil. 2009 à 14:26
"Heureusement que je ne développais pas une appli pour Airbus..."
Ce genre de problème est certainement déjà arrivé et arrivera encore certainement.
Cependant, c'est à ça que servent les tests (même si ça ne suffit pas toujours)
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -