Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertir un char * en double

voire en flottant...

Sujet résolu
Anonyme
    4 janvier 2006 à 21:28:17

    Bonsoir,

    J'essaie de faire un peu de maths sur des nombres assez grand, donc j'utilise le type double.

    Pour mon programme, je récupère les arguments passés à l'appel de la ligne de commande. Le premier est un nombre que j'aimerais mettre dans une variable de type double. Or,

    int main(int n, char *params[])
    {
        float nombre;
        nombre = atof ( params[1] );
        printf( "%f\n" , nombre );
        return 0;
    }

    retourne:
    panther$ ./PREMIER 957689
    1.000000
    panther$


    Vous sauriez trouver l'erreur s'il vous plait? Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      4 janvier 2006 à 21:31:01

      Citation : man page

      NAME

      atof - convert a string to a double.

      SYNOPSIS

      #include <stdlib.h>

      double atof(const char *nptr);



      atof retourne un double, pas un float ;)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        4 janvier 2006 à 21:36:04

        Chelou. Avec un code pour les doubles :

        Minipingouin:~/progs poulet$ ./foo.prog 5546146556156156
        5546146556156156.000000
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          4 janvier 2006 à 21:37:50

          Ah heu wé heu wé :)

          Nan en fait j'ai copié/collé la mauvaise version:

          int main(int n, char *params[])
          {
              double nombre;
              nombre = atof ( params[1] );
              printf( "%ld\n" , nombre );
           //   premier( nombre );
              return 0;
          }

          retourne
          panther$ ./PREMIER 957689
          1072693248
          panther$
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            4 janvier 2006 à 21:39:43

            Et il a pas mis stdlib.

            Edit : quelqu'un pourrait nous expliquer pourquoi sans stdlib.h ça compile mais ça foire après ? J'y connais strictement rien, alors est-ce que je me trompe si je suppose que le linker met une mauvaise adresse ? Si je ne me trompe pas, est-ce que les conséquences auraient pu être plus graves ?

            Nous utilisons MacOS et gcc.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              4 janvier 2006 à 21:40:51

              Rho toi.

              C'est où "Résolu" déja?
              • Partager sur Facebook
              • Partager sur Twitter

              Convertir un char * en double

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown