Partager via


_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 _OVERFLOWsont 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