_atodbl
, _atodbl_l
, _atoldbl
, _atoldbl_l
, , _atoflt
, _atoflt_l
Convierte una cadena en double (_atodbl
), long double (_atoldbl
) o float (_atoflt
).
Sintaxis
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 );
Parámetros
value
Valor double, long double o float que se genera al convertir la cadena en un valor de punto flotante. Estos valores se agrupan en una estructura.
str
Cadena que se va a analizar para convertirla en un valor de punto flotante.
locale
Configuración regional que se va a usar.
Valor devuelto
Si la operación se realiza correctamente, devuelve 0. Los códigos de error posibles son _UNDERFLOW
o _OVERFLOW
, que se definen en el archivo <de encabezado math.h>.
Comentarios
Estas funciones convierten una cadena en un valor de punto flotante. La diferencia entre estas funciones y la atof
familia de funciones es que estas funciones no generan código de punto flotante y no provocan excepciones de hardware. En lugar de ello, las condiciones de error se notifican como códigos de error.
Si una cadena no tiene una interpretación válida como un valor de punto flotante, value
se establece en cero y el valor devuelto es cero.
Las versiones de estas funciones que tienen el _l
sufijo son idénticas a las versiones que no tienen el sufijo, excepto que usan el locale
parámetro que se pasa en lugar de la configuración regional del subproceso actual.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Rutinas | Encabezado necesario |
---|---|
_atodbl , , _atoldbl , _atoflt _atodbl_l , , _atoldbl_l , _atoflt_l |
<stdlib.h> |
Ejemplo
// 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
Vea también
Conversión de datos
Compatibilidad con cálculos matemáticos y el punto flotante
Configuración regional
atof
, _atof_l
, , _wtof
, _wtof_l