NOMBRE¶
strtod, strtof, strtold - convierten una cadena ASCII a un número en coma
flotante
SINOPSIS¶
#include <stdlib.h>
double strtod(const char *nptr, char
**endptr);
float strtof(const char *nptr, char
**endptr);
long double strtold(const char *nptr, char
**endptr);
DESCRIPCIÓN¶
Las funciones
strtod,
strtof, and
strtold convierten la
porción inicial de la cadena a la que apunta
nptr a
representación
double,
float, y
long double ,
respectivamente.
El formato esperado para (la porción inicial de) la cadena es un espacio
inicial opcional, comprobado por
isspace(3), un signo opcional de
más (``+'') o menos (``-'') seguido de (i) un número decimal, o
(ii) un número hexadecimal, o (iii) un infinito, o (iv) un NAN
(not-a-number).
Un
número decimal consiste en una secuencia no vacía de
dígitos decimales conteniendo posiblemente un carácter radical
(punto decimal, dependiente de la localización, normalmente ``.''),
seguida opcionalmente por un exponente decimal. Un exponente decimal consiste
en un carácter ``E'' o ``e'', seguido por un signo opcional de
más o menos, seguido por una secuencia no vacía de
dígitos decimales, e indica multiplicación por una potencia de
10.
Un
número hexadecimal consiste en una cadena ``0x'' o ``0X''
seguida por una secuencia no vacía de dígitos hexadecimales
conteniendo posiblemente un carácter radical, seguida opcionalmente por
un exponente binario. Un exponente binario consiste en un carácter
``P'' o ``p'', seguido de un signo opcional de más o menos, seguido por
una secuencia no vacía de dígitos decimales, e indica
multiplicación por una potencia de 2. Al menos debe estar presente o el
carácter radical o el exponente binario.
Un
infinito es o bien una cadena ``INF'' o ``INFINITY'', sin importar las
mayúsuculas.
Un
NAN es una cadena ``NAN'' (sin importar las mayúsculas) seguida
opcionalemente por `(', una secuencia de caracteres, seguida de ')'. La cadena
de caracteres especifica el tipo de NAN de manera dependiente de la
implementación.
VALOR DEVUELTO¶
Esta funciones devuelven el valor convertido, si lo hay.
Si
endptr no es
NULL, un puntero al caracter tras el último
caracter utilizado en la conversión es almacenado en la posición
referenciada por
endptr.
Si no se realizó conversión, se devuelve cero y el valor de
nptr es almacenado en la posición referenciada por
endptr.
Si el valor correcto puede causar desbordamiento, se devuelve
HUGE_VAL
(
HUGE_VALF,
HUGE_VALL) positivo o negativo (de acuerdo al signo
del valor), y
ERANGE se pone en
errno. Si el valor correcto
puede causar desbordamiento por abajo, se devuelve cero y
ERANGE se
pone en
errno.
ERRORES¶
- ERANGE
- Hubo desbordamiento por arriba o por abajo.
ANSI C describe
strtod, C99 describe las otras dos funciones.
VÉASE TAMBIÉN¶
atof(3),
atoi(3),
atol(3),
strtol(3),
strtoul(3)