C - fonction strtod au comportement étrange
Psycho
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je travaille sur un buffer avec des nombres "aléatoires" séparés par des virgules, comme ceci :
"1589.3,12478.359,485.39971" etc
Je souhaite vérifier la longueur des parties entières et décimales.
J'ai fait quelques recherches et j'ai décidé d'utiliser strtod sur mon buffer pour récupérer un nombre et l'analyser.
Le problème, c'est que ça ne marchait pas comme voulu. J'ai donc créé un exemple simple pour mettre en évidence mon problème :
int number;
char myNumber[10] = "3113.14";
number = strtod (myNumber,NULL);
printf("%d\n", number);
Ca m'affiche 3113. J'ai fait des recherches et je me suis rendu compte qu'il fallait utiliser %f, car si je demande l'affichage d'un int, c'est normal que j'ai pas de partie décimale.
J'ai donc fait ma correction :
int number;
char myNumber[10] = "3113.14";
number = strtod (myNumber,NULL);
printf("%f\n", number);
Et maintenant, ça m'affiche 0.000000
J'utilise dev c++, parce que je suis pas admin de mon poste donc j'ai pas le choix :/ Je sais pas si ça a un impacte...
Merci pour votre attention et votre aide !
Je travaille sur un buffer avec des nombres "aléatoires" séparés par des virgules, comme ceci :
"1589.3,12478.359,485.39971" etc
Je souhaite vérifier la longueur des parties entières et décimales.
J'ai fait quelques recherches et j'ai décidé d'utiliser strtod sur mon buffer pour récupérer un nombre et l'analyser.
Le problème, c'est que ça ne marchait pas comme voulu. J'ai donc créé un exemple simple pour mettre en évidence mon problème :
int number;
char myNumber[10] = "3113.14";
number = strtod (myNumber,NULL);
printf("%d\n", number);
Ca m'affiche 3113. J'ai fait des recherches et je me suis rendu compte qu'il fallait utiliser %f, car si je demande l'affichage d'un int, c'est normal que j'ai pas de partie décimale.
J'ai donc fait ma correction :
int number;
char myNumber[10] = "3113.14";
number = strtod (myNumber,NULL);
printf("%f\n", number);
Et maintenant, ça m'affiche 0.000000
J'utilise dev c++, parce que je suis pas admin de mon poste donc j'ai pas le choix :/ Je sais pas si ça a un impacte...
Merci pour votre attention et votre aide !
A voir également:
- C - fonction strtod au comportement étrange
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
1 réponse
Salut Psycho,
http://www.cplusplus.com/reference/cstdlib/strtod/
Cette fonction renvoie un double.
Là tu stockes le résultat dans number, qui est un int.
Dal
http://www.cplusplus.com/reference/cstdlib/strtod/
Cette fonction renvoie un double.
Là tu stockes le résultat dans number, qui est un int.
Dal