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 :

Char* to double (SANS arrondi)


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut Char* to double (SANS arrondi)
    Bonjour,

    voilà je récupère un tableau de char dans lequel se trouve un nombre. je veux le stocker dans un double, j'ai essayé d'utiliser la fonction atof mais celle-ci m'arrondi mon nombre !

    en naviguant sur le net j'ai trouvé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    double to_double ( const char *p )
    {
      std::stringstream ss ( p );
      double result = 0;
     
      ss>> result;
     
      return result;
    }
    mais idem

    ce que je ne comprend pas c'est qu'il n'arrondi pas tout ex :

    0.266529 ca il me le garde tel quel mais
    71764.851563 ca il m'arrondi en 71764.9

    on dirait qu'il ne garde que 6 chiffres significatifs

    peut-on changer ca?

    merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Commence par vérifier que c'est bien arrondi au parsing et non tout bêtement à l'affichage...
    Pense à utiliser le manipulateur setprecision...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    me revoilà,

    j'ai oublié de dire que je n'affiche pas ca en console mais que je stocke dans un fichier texte (donc apparemment ton setprecision n'est pas ce que je cherche).

    mon tableau de char, quand je le met dans un fichier texte, contient bien le nombre entier

    le problème d'arrondi se passe lors de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double number;
    number = atof(montab);

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Citation Envoyé par Elstak Voir le message
    j'ai oublié de dire que je n'affiche pas ca en console mais que je stocke dans un fichier texte (donc apparemment ton setprecision n'est pas ce que je cherche).
    Si tu utilises les streams pour écrire dans le fichier texte (ce que tu es supposé faire quand tu programmes en C++), c'est ce que tu cherches.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    ah oui

    je l'avais mal utilisé en fait... j'avais mis setprecision(6), en pensant que c'était le nombre de chiffre après la virgule, au lieu de setprecision(12)... (enfin j'ai meme mis 14 au cas où j'aurai de plus gros nombres...).

    Merci bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. transformer une chaîne de char en double (argv[])
    Par peuf23 dans le forum Débuter
    Réponses: 1
    Dernier message: 20/03/2008, 14h28
  2. Transformer un char en double ato(?)
    Par beegees dans le forum C
    Réponses: 5
    Dernier message: 27/11/2007, 16h25
  3. pb - résultat de type double/float arrondi
    Par Ayana dans le forum Langage
    Réponses: 38
    Dernier message: 23/10/2007, 20h05
  4. float, double et arrondi
    Par simla dans le forum Langage
    Réponses: 2
    Dernier message: 25/08/2007, 15h22
  5. comment convertir un char[] en double
    Par groult jeremy dans le forum C++
    Réponses: 6
    Dernier message: 17/11/2005, 14h49

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