atof, _atof_l, _wtof, _wtof_l

 

Publicado: julio de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Convertir una cadena en double.

double atof(  
   const char *str   
);  
double _atof_l(  
   const char *str,  
   _locale_t locale  
);  
double _wtof(  
   const wchar_t *str   
);  
double _wtof_l(  
   const wchar_t *str,  
   _locale_t locale  
);  

str
Cadena que se va a convertir.

locale
Configuración regional que se va a usar.

Cada función devuelve el double valor generado mediante la interpretación de los caracteres de entrada como un número. El valor devuelto es 0.0 si la entrada no se puede convertir en un valor de ese tipo.

En todos los casos de fuera de intervalo, se establece errno en ERANGE. Si el parámetro pasado es NULL, se invoca el controlador de parámetros no válidos, como se describe en validación del parámetro. Si la ejecución puede continuar, estas funciones establecen errno a EINVAL y devuelven 0.

Estas funciones convierten una cadena de caracteres en un valor de punto flotante de precisión doble.

La cadena de entrada es una secuencia de caracteres que se puede interpretar como un valor numérico del tipo especificado. La función deja de leer la cadena de entrada en el primer carácter que no se reconoce como parte de un número. Este carácter puede ser el carácter nulo ('\0' o L '\0') terminando la cadena.

El str argumento atof y _wtof tiene la forma siguiente:

[whitespace] [sign] [digits] [.digits] [ {e | E }[sign]digits]

Un whitespace consta de caracteres de espacio o tabulación, que se omiten; sign sea más (+) o menos (-); y digits son uno o más dígitos decimales. Si no aparece ningún dígito antes del punto decimal, al menos uno debe aparecer después del separador decimal. Los dígitos decimales pueden ir seguidos de un exponente que consta de una carta de presentación (e, o E) y un entero decimal con signo opcionalmente.

Las versiones UCRT de estas funciones no admiten la conversión de estilo de Fortran (d o D) letras exponente. Esta extensión no estándar era compatible con versiones anteriores de CRT y puede ser un cambio importante para el código.

Las versiones de estas funciones con el sufijo _l son idénticas salvo que usan el parámetro locale pasado en lugar de la configuración regional actual.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_tstofatofatof_wtof
_ttofatofatof_wtof
Routine(s)Encabezado necesario
atof, _atof_lC: <math.h> or <stdlib.h> C++: <cstdlib>, <stdlib.h>, <cmath> or <math.h></math.h></stdlib.h></stdlib.h></math.h>
_wtof, _wtof_lC: <stdlib.h> or <wchar.h> C++: <cstdlib>, <stdlib.h> or <wchar.h></wchar.h></stdlib.h></wchar.h></stdlib.h>

Este programa muestra cómo se pueden convertir números almacenados como cadenas en valores numéricos utilizando la atof y _atof_l funciones.

// crt_atof.c  
//  
// This program shows how numbers stored as   
// strings can be converted to numeric  
// values using the atof and _atof_l functions.  

#include <stdlib.h>  
#include <stdio.h>  
#include <locale.h>  

int main(void)
{
    char    *str = NULL;
    double value = 0;
    _locale_t fr = _create_locale(LC_NUMERIC, "fr-FR");

    // An example of the atof function  
    // using leading and training spaces.  
    str = "  3336402735171707160320 ";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);

    // Another example of the atof function  
    // using the 'E' exponential formatting keyword.  
    str = "3.1412764583E210";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);

    // An example of the atof and _atof_l functions  
    // using the 'e' exponential formatting keyword  
    // and showing different decimal point interpretations.  
    str = "  -2,309e-25";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);
    value = _atof_l(str, fr);
    printf("Function: _atof_l(\"%s\", fr)) = %e\n", str, value);
}  

Function: atof("  3336402735171707160320 ") = 3.336403e+21
Function: atof("3.1412764583E210") = 3.141276e+210
Function: atof("  -2,309e-25") = -2.000000e+00
Function: _atof_l("  -2,309e-25", fr)) = -2.309000e-25  

Conversión de datos
Compatibilidad de punto flotante
Configuración regional
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, _atoflt_l

Mostrar: