Type double problème de calcul [Résolu]

cs_mouic 13 Messages postés mardi 27 mars 2007Date d'inscription 2 octobre 2009 Dernière intervention - 6 juil. 2009 à 12:19 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 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
Afficher la suite 

Votre réponse

4 réponses

SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 6 juil. 2009 à 12:32
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SharpMao
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 6 juil. 2009 à 12:25
0
Utile
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
Commenter la réponse de leprov
cs_mouic 13 Messages postés mardi 27 mars 2007Date d'inscription 2 octobre 2009 Dernière intervention - 6 juil. 2009 à 12:50
0
Utile
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...
Commenter la réponse de cs_mouic
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 6 juil. 2009 à 14:26
0
Utile
"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 ! -
Commenter la réponse de krimog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.