_atodbl
, , _atodbl_l
, _atoldbl_l
_atoldbl
, , _atoflt
_atoflt_l
Convertit une chaîne en valeur de type double (_atodbl
), long double (_atoldbl
) ou float (_atoflt
).
Syntaxe
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, const char * str );
int _atoflt_l( _CRT_FLOAT * value, const char * str, _locale_t locale );
Paramètres
value
Valeur de type double, long double ou float produite par la conversion de la chaîne en une valeur à virgule flottante. Ces valeurs sont encapsulées dans une structure.
str
Chaîne à analyser en vue de sa conversion en une valeur à virgule flottante.
locale
Paramètres régionaux à utiliser.
Valeur retournée
Retourne 0 en cas de réussite. Les codes d’erreur possibles sont _UNDERFLOW
ou _OVERFLOW
sont définis dans le fichier <d’en-tête math.h>.
Notes
Ces fonctions convertissent une chaîne en une valeur à virgule flottante. La différence entre ces fonctions et la atof
famille de fonctions est que ces fonctions ne génèrent pas de code à virgule flottante et ne provoquent pas d’exceptions matérielles. Au lieu de cela, les conditions d’erreur sont signalées en tant que codes d’erreur.
Si une chaîne n’a pas d’interprétation valide comme valeur à virgule flottante, value
est définie sur zéro et la valeur de retour est égale à zéro.
Les versions de ces fonctions qui ont le _l
suffixe sont identiques aux versions qui n’ont pas le suffixe, sauf qu’elles utilisent le locale
paramètre passé au lieu des paramètres régionaux du thread actuel.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
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;
}
Double value: 3.141593
Return value: 0
Float value: 3.141593
Return value: 0
Float value: 0.000000
Return value: 0
Float value: inf
Return value: 3
Voir aussi
Conversion de données
Prise en charge des fonctions mathématiques et à virgule flottante
Paramètres régionaux
atof
, , _atof_l
_wtof
, ,_wtof_l