Type double problème de calcul

Résolu
cs_mouic Messages postés 13 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 2 octobre 2009 - 6 juil. 2009 à 12:19
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 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
A voir également:

4 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
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)
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
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
0
cs_mouic Messages postés 13 Date d'inscription mardi 27 mars 2007 Statut Membre Derniè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...
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
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 ! -
0
Rejoignez-nous