_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt_l de _atoflt
Convertit une chaîne en double (_atodbl), au long double (_atoldbl), ou en une valeur float (_atoflt).
int _atodbl(
_CRT_DOUBLE * value,
char * str
);
int _atodbl_l (
_CRT_DOUBLE * value,
char * str,
locale_t locale
);
int _atoldbl(
_LDOUBLE * value,
char * str
);
int _atoldbl_l (
_LDOUBLE * value,
char * str,
locale_t locale
);
int _atoflt(
_CRT_FLOAT * value,
char * str
);
int _atoflt_l(
_CRT_FLOAT * value,
char * str,
locale_t locale
);
Paramètres
value
Le double, long double, ou valeur float produite lors de la conversion la chaîne en valeur à virgule flottante.ces valeurs sont encapsulées dans une structure.str
La chaîne à analyser pour convertir une valeur à virgule flottante.locale
Les paramètres régionaux à utiliser.
Valeur de retour
Retourne 0 si l'opération a réussi ; les codes d'erreur possibles sont _UNDERFLOW ou _OVERFLOW, défini dans le fichier d'en-tête Math.h.
Notes
Ces fonctions et convertissent une chaîne en valeur à virgule flottante.La différence entre ces fonctions et la famille d' atof des fonctions est que ces fonctions ne génèrent pas de code à virgule flottante et par conséquent n'entraînent pas les exceptions de matériel.À la place, les conditions d'erreur sont stockées comme code d'erreur.
Si une chaîne n'a pas de traduction valide comme valeur à virgule flottante, value est la valeur zéro et la valeur de retour est zéro.
Les versions de ces fonctions par le suffixe d' _l sont identiques mais elles utilisent le paramètre de paramètres régionaux passé au lieu des paramètres régionaux du thread courant.
Configuration requise
routines |
en-tête requis |
---|---|
_atodbl, _atoldbl, _atoflt _atodbl_l, _atoldbl_l, _atoflt_l |
<stdlib.h> |
Exemple
// crt_atodbl.c
// Uses _atodbl to convert a string to a double precision
// floating point value.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char str1[256] = "3.141592654";
char abc[256] = "abc";
char oflow[256] = "1.0E+5000";
_CRT_DOUBLE dblval;
_CRT_FLOAT fltval;
int retval;
retval = _atodbl(&dblval, str1);
printf("Double value: %lf\n", dblval.x);
printf("Return value: %d\n\n", retval);
retval = _atoflt(&fltval, str1);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// A non-floating point value: returns 0.
retval = _atoflt(&fltval, abc);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// Overflow.
retval = _atoflt(&fltval, oflow);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
return 0;
}