strtof
, _strtof_l
, , wcstof
, _wcstof_l
Convierte las cadenas en un valor de punto flotante de precisión sencilla.
Sintaxis
float strtof(
const char *strSource,
char **endptr
);
float _strtof_l(
const char *strSource,
char **endptr,
_locale_t locale
);
float wcstof(
const wchar_t *strSource,
wchar_t **endptr
);
float wcstof_l(
const wchar_t *strSource,
wchar_t **endptr,
_locale_t locale
);
Parámetros
strSource
Cadena terminada en NULL que se va a convertir.
endptr
Puntero al carácter que detiene el examen.
locale
Configuración regional que se va a usar.
Valor devuelto
strtof
devuelve el valor del número de punto flotante, excepto si la representación fuera a producir un desbordamiento, en cuyo caso la función devuelve +/-HUGE_VALF
. El signo de HUGE_VALF
coincide con el signo del valor que no se puede representar. strtof
devuelve 0 si no se puede efectuar ninguna conversión o si se produce un subdesbordamiento.
wcstof
devuelve valores de manera parecida a strtof
. Para ambas funciones, errno
se establece ERANGE
en si se produce desbordamiento o subflujo y se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros.
Para obtener más información sobre los códigos de retorno, vea errno
, _doserrno
, _sys_errlist
y _sys_nerr
.
Comentarios
Cada función convierte la cadena de entrada strSource
en un float
. La función strtof
convierte strSource
en un valor de precisión sencilla. strtof
deja de leer la cadena strSource
en el primer carácter que no reconoce como parte de un número. Este puede ser el carácter nulo de terminación. wcstof
es una versión con caracteres anchos de strtof
; su argumento strSource
es una cadena de caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual.
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.
Asignaciones de rutinas de texto genérico
Rutina TCHAR.H | _UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcstof |
strtof |
strtof |
wcstof |
_tcstof_l |
_strtof_l |
_strtof_l |
_wcstof_l |
El LC_NUMERIC
valor de categoría de la configuración regional actual determina el reconocimiento del carácter radix en strSource
; para obtener más información, vea setlocale
, _wsetlocale
. Las funciones que no tienen el sufijo _l
usan la configuración regional actual; las que tienen el sufijo son idénticas, salvo que usan la configuración regional que se pasa. Para obtener más información, vea Locale.
Si endptr
no NULL
es , un puntero al carácter que detuvo el examen se almacena en la ubicación a endptr
la que apunta . Si no se puede efectuar ninguna conversión (no se encontraron dígitos válidos o se especificó una base no válida), el valor de strSource
se almacena en la ubicación a la que señala endptr
.
strtof
espera que strSource
señale a una cadena con el formato siguiente:
[] [whitespace
sign
] [digits
] [.digits
] [{e
| E
} [sign
] digits
]
Un whitespace
puede constar de caracteres de espacio y de tabulación, que se omiten; sign
es más (+
) o menos (-
); y digits
se refiere a uno o varios dígitos decimales. Si no aparece ningún dígito antes del carácter de base, debe aparecer al menos uno después del carácter de base. Los dígitos decimales pueden ir seguidos de un exponente, que consta de una letra inicial (e
o E
) y un entero con signo optativo. Si no aparece ni una parte exponencial ni un carácter de base, se supone que un carácter de base sigue al último dígito de la cadena. El primer carácter que no se ajuste a este formato detiene el análisis.
Las versiones UCRT de estas funciones no admiten la conversión de letras como exponente de estilo Fortran (d
o D
). Esta extensión no estándar era compatible con versiones anteriores de CRT y puede que sea un cambio decisivo para el código.
Requisitos
Routine | Encabezado necesario |
---|---|
strtof , _strtof_l |
C: <stdlib.h> C++: <cstdlib> o <stdlib.h> |
wcstof , _wcstof_l |
C: <stdlib.h> o <wchar.h> C++: <cstdlib>, <stdlib.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_strtof.c
// This program uses strtof to convert a
// string to a single-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
float x;
string = "3.14159This stopped it";
x = strtof(string, &stopstring);
printf("string = %s\n", string);
printf(" strtof = %f\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.14159This stopped it
strtof = 3.141590
Stopped scan at: This stopped it
Vea también
Conversión de datos
Compatibilidad con cálculos matemáticos y el punto flotante
Interpretación de secuencias de caracteres de varios bytes
Configuración regional
Funciones de cadena a valor numérico
strtod
, _strtod_l
, , wcstod
, _wcstod_l
strtol
, wcstol
, , _strtol_l
, _wcstol_l
strtoul
, _strtoul_l
, , wcstoul
, _wcstoul_l
atof
, _atof_l
, , _wtof
, _wtof_l
localeconv
_create_locale
, _wcreate_locale
_free_locale