NAME
strtod, strtof, strtold - convert ASCII string to floating point number
SYNOPSIS
#include <stdlib.h>
I double strtod(const char * nptr , char ** endptr );
R #define _XOPEN_SOURCE 600 /* or #define _ISOC99_SOURCE */
#include <stdlib.h>
I float strtof(const char * nptr , char ** endptr );
I long double strtold(const char * nptr , char ** endptr );
DESCRIPTION
The
R strtod (),
R strtof (),
and
R strtold ()
functions convert the initial portion of the string pointed to by
nptr
to
R double ,
R float ,
and
long double
representation, respectively.
The expected form of the (initial portion of the) string is
optional leading white space as recognized by
isspace(3),
an optional plus ('+') or minus sign ('-') and then either
(i) a decimal number, or (ii) a hexadecimal number,
or (iii) an infinity, or (iv) a NAN (not-a-number).
A
decimal number
consists of a nonempty sequence of decimal digits
possibly containing a radix character (decimal point, locale dependent,
usually '.'), optionally followed by a decimal exponent.
A decimal exponent consists of an 'E' or 'e', followed by an
optional plus or minus sign, followed by a non-empty sequence of
decimal digits, and indicates multiplication by a power of 10.
A
hexadecimal number
consists of a "0x" or "0X" followed by a nonempty sequence of
hexadecimal digits possibly containing a radix character,
optionally followed by a binary exponent.
A binary exponent
consists of a 'P' or 'p', followed by an optional
plus or minus sign, followed by a non-empty sequence of
decimal digits, and indicates multiplication by a power of 2.
At least one of radix character and binary exponent must be present.
An
infinity
is either ``INF'' or ``INFINITY'', disregarding case.
A
NAN
is ``NAN'' (disregarding case) optionally followed by '(',
a sequence of characters, followed by ')'.
The character string specifies in an implementation-dependent
way the type of NAN.
RETURN VALUE
These functions return the converted value, if any.
If
endptr
is not NULL,
a pointer to the character after the last character used in the conversion
is stored in the location referenced by
R endptr .
If no conversion is performed, zero is returned and the value of
nptr
is stored in the location referenced by
R endptr .
If the correct value would cause overflow, plus or minus
HUGE_VAL
(HUGE_VALF,
R HUGE_VALL )
is returned (according to the sign of the value), and
ERANGE
is stored in
R errno .
If the correct value would cause underflow, zero is
returned and
ERANGE
is stored in
R errno .
ERRORS
ERANGE
Overflow or underflow occurred.
CONFORMING TO
C89 describes
R strtod (),
C99
describes the other two functions.
NOTES
Since
0 can legitimately be returned
on both success and failure, the calling program should set
errno
to 0 before the call,
and then determine if an error occurred by checking whether
errno
has a non-zero value after the call.
EXAMPLE
See the example on the
strtol(3)
manual page;
the use of the functions described in this manual page is similar.
SEE ALSO