IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problèmes avec des nombres... que faire ?


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut Problèmes avec des nombres... que faire ?
    Bonjour à tous !

    Voilà, je suis en train de faire un programme qui effectue un certain nombre de calculs numériques ; le programme tourne comme il faut et retourne presque les résultats attendus... mais j'ai deux petits problèmes qui viennent perturber ces résultats :

    - le premier est que, pour certaines fonctions, le résultat retourné est un arrondi de ce que je devrais avoir ; par exemple, le résultat retourné est 134899 quand le résultat attendu est 134898.921875 ... J'ai déclaré mon résultat comme double puis comme long double, j'ai essayé de le forcer à retourner un double - en écrivant double(resultat) - mais l'erreur persiste quand même...

    - le second problème ressemble comme deux gouttes d'eau au précédent (toujours des histoires de nombres pas très dociles donc) : cette fois-ci, c'est lorsque je travaille avec des nombres de l'ordre du million ; au lieu de me retourner par exemple 9146572, le programme retourne 9.14657e+06... En plus dans cette fonction je ne fais aucun calcul, car le nombre 9146572 est lu en fait dans un fichier texte, et est affecté à une varible dans la fonction. Mais à cause de cet arrondi, mes résultats sont faux...

    Voilà, j'espère avoir été assez clair dans mes explications... et merci d'avance à celui qui saura m'aider

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Déjà, si tu es appelé à faire pas mal de calcul numérique, je te conseille la lecture suivante (bien qu'un peu ardue) : What Every Computer Scientist Should Know About Floating-Point Arithmetic

    Je ne connais pas ton domaine d'application, mais quelques pistes de "bidouille" :
    - Utiliser des entiers si possible (solution à préférer quand elle est possible. La meilleure)
    - Utiliser une classe simulant des flottants avec une précision plus grande (mais combien ? Lire l'article)
    - Pour le deuxième point, peut-être est-ce un simple problème d'affichage. Regarde par exemple un truc comme cout << fixed << setprecision(10) << value
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    Ok, merci pour ton aide. Par contre je viens d'essayer, mais le compilateur dit qu'il ne connait pas la fonction setprecision. Peux-tu me dire s'il faut mettre un #include particulier au début pour que la fonction soit reconnue ?

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    Ah oui merci c'est bon ; en fait j'avais pas mis
    Merci bien pour ton aide

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    Oui donc c'est bon, ce sujet peut être considéré comme résolu !

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    C'est à toi de cocher une case quand tu réponds pour indiquer que le sujet est résolu.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. problème avec des grands nombres
    Par lebelge dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 29/07/2011, 06h51
  2. problème avec des grands nombres
    Par lebelge dans le forum Débuter
    Réponses: 8
    Dernier message: 28/07/2011, 21h00
  3. Réponses: 11
    Dernier message: 14/06/2011, 18h37
  4. Réponses: 1
    Dernier message: 07/05/2007, 20h12
  5. Problème de syntaxe avec des nombres
    Par baleiney dans le forum Langage
    Réponses: 7
    Dernier message: 09/07/2006, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo