Précision d'un double ?

cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 - 26 sept. 2006 à 22:37
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 - 27 sept. 2006 à 15:18
Quand je fais
toto = 1.173222385022386;

Alors toto prend comme valeurs 1.1732223850224.

L'enfoiré me coupe des décimals ... comment faire pour tout garder ?

Merci !

11 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 sept. 2006 à 22:46
Comment tu fais pour afficher ton double ?

L'enfoiré c'est pas le "pc", mais le programmeur qui est débile. (ca s'adresse pas a toi, mais c'est le cas général)
0
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 1
26 sept. 2006 à 22:50
lol j'suis d'accord pour l'enfoirer :P

Je ne l'affiche pas c'est une variable interne mais lorsque je trace avec le debug c'est evident que je me suis fait couper des décimals...

Quelqu'un a une solution parce qu'on parle de milli-metre et la précision est extremement importante !
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
26 sept. 2006 à 22:51
C'est peut-être l'afficheur qui n'affiche pas toutes les décimales.
Utilises-tu printf ? cout ?
0
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 1
26 sept. 2006 à 22:54
nenon c'est pas l'affichage si sa serais uniquement ca j'utiliserais la fonction precision() :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 sept. 2006 à 22:56
Essai:


std::cout.precision(20);

std::cout << ton_reel << std::endl;
0
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 1
26 sept. 2006 à 23:15
Ca marche pas c'est directement lorsque j'assigne que mes décimal sont tronquée.

Des que je fais toto = 1.173222385022386;
toto a été arrondit automatiquement ....
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 sept. 2006 à 23:49
Mais il me semble que la précision des double c'est du 10^-16, donc il
tronque à peu près a la 16eme décimal. Il pourra pas aller plus loin de
toute facon.
0
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 1
27 sept. 2006 à 05:09
Ouias parfais mais alors je fais quoi moi ?

Et en plus il me garde pas 16 décimal justement ... c'est la le probleme ...


Solution ? Help :S
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
27 sept. 2006 à 09:54
Un double ne sauve pas que des décimales mais aussi la partie entière...

Un bon lien vers un forum ou où une question similaire a été posée.
http://www.experts-exchange.com/Programming/Programming_Languages/C/Q_20923717.html
0
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 1
27 sept. 2006 à 14:50
Merci pour le lien mais c est payant ce fichu site la :(

Mais bon j'explique mon probleme un peu mieux
Je recoit un double qui vaut 1.173222385022386
Je le met dans le fichier cool j'ai 1.173222385022386
Je relit le fichier cool j'ai 1.173222385022386
Je remet la valeur dans le meme double , fuck j'ai 1.1732223850224

Pourquoi la est la question !
0
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 1
27 sept. 2006 à 15:18
J'ai résolut mon problème d'une autre facon mais regarder celle la elle en vaut la peine !

HSValue=1.18286829466829420000; // Mon double est tronquer a 1.1828682946683

//J'ecrit dans un fichier
m_LogFile.open(LOG_HEIGHT_SENSOR_FILE,ios::out | ios::trunc);
m_LogFile << HSValue;
m_LogFile.flush();

//Devine la valeur que j'ai dans le fichier ... 1.18286829466829420000
//Ouin c beau la vie ....
0
Rejoignez-nous