strtold
, _strtold_l
, , wcstold
, _wcstold_l
Convierte las cadenas en un valor largo de punto flotante de precisión doble.
Sintaxis
long double strtold(
const char *strSource,
char **endptr
);
long double _strtold_l(
const char *strSource,
char **endptr,
_locale_t locale
);
long double wcstold(
const wchar_t *strSource,
wchar_t **endptr
);
long double wcstold_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
strtold
devuelve el valor del número de punto flotante como , long double
excepto cuando la representación provocaría un desbordamiento; en ese caso, la función devuelve +/-HUGE_VALL
. El signo de HUGE_VALL
coincide con el signo del valor que no se puede representar. strtold
devuelve 0 si no se puede efectuar ninguna conversión o si se produce un subdesbordamiento.
wcstold
devuelve valores de manera parecida a strtold
. 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 long double
. La strtold
función deja de leer la cadena strSource
en el primer carácter que no puede reconocer como parte de un número. Puede ser el carácter nulo de terminación. La versión con caracteres anchos de strtold
es wcstold
; 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 |
---|---|---|---|
_tcstold |
strtold |
strtold |
wcstold |
_tcstold_l |
_strtold_l |
_strtold_l |
_wcstold_l |
El valor de la categoría LC_NUMERIC
de la configuración regional actual determina el reconocimiento del carácter de base de strSource
. Para más información, vea setlocale
, _wsetlocale
. Las funciones que no tienen el sufijo _l
usan la configuración regional actual; _strtold_l
y _wcstold_l
son idénticos a _strtold
y _wcstold
, 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
.
strtold
espera que strSource
señale a una cadena con el formato siguiente:
[
whitespace
][sign
][digits
][.digits
] [{d
e
D
| |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 (d
, D
, 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.
Requisitos
Routine | Encabezado necesario |
---|---|
strtold , _strtold_l |
<stdlib.h> |
wcstold , _wcstold_l |
<stdlib.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
long double x;
string = "3.1415926535898This stopped it";
x = strtold(string, &stopstring);
printf("string = %s\n", string);
printf(" strtold = %.13Lf\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
strtold = 3.1415926535898
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