Aïe je plafonne!! - C - Programmation
Marsh Posté le 04-05-2006 à 12:09:59
Il est déconseillé d'utiliser atoi/atof car ces fonctions ne permettent aucune détection d'erreur.
Il vaut mieux utiliser strtol() pour les entiers, qui converti en long et devrait te convenir.
Voire, si ton compilateur est C99, utiliser strtoll() qui converti en long long. Mais c'est vraiment si tu plafonnes.
Pour les nombres flottants, c'est strtod() (ou strtold() pour les long double, mais pareil c'est C99).
Enfin, pour l'affichage avec printf(), c'est %ld pour les long, %f pour les double.
Marsh Posté le 04-05-2006 à 14:30:42
BigEno a écrit :
|
Code :
|
Marsh Posté le 05-05-2006 à 18:40:35
Emmanuel Delahaye a écrit : T'es maso ? |
Toujours dans la finesse...
Marsh Posté le 04-05-2006 à 11:53:56
Bonjour à tous,
J'utilise un programme dans lequel j'affiche la valeur de cette expression:
(int)(atof(qdbmnd_amount.arr)*100)
Je n'ai pas de souci si ce n'est que lorsque la chaine de caractère qdbmnd_amount.arr vaut par exemple 40000000:
j'obtiens une valeur de 2147483647 au lieu de 4000000000. Logique! me direz-vous car c'est la valeur max d'un int (4 octects).
Mais quand je change le cast en (double) ou rien (atof renvoie naturellement un double):
alors j'ai:1106103653___.
Quelqu'un pourrait trouver une solution à mon problème?
Merci d'avance