These functions are declared in `stdlib.h'.
strtod
("string-to-double") function converts the initial
part of string to a floating-point number, which is returned as a
value of type double
.
This function attempts to decompose string as follows:
isspace
function
(see section Classification of Characters). These are discarded.
*tailptr
.
If the string is empty, contains only whitespace, or does not contain an
initial substring that has the expected syntax for a floating-point
number, no conversion is performed. In this case, strtod
returns
a value of zero and the value returned in *tailptr
is the
value of string.
In a locale other than the standard "C"
or "POSIX"
locales,
this function may recognize additional locale-dependent syntax.
If the string has valid syntax for a floating-point number but the value
is not representable because of overflow, strtod
returns either
positive or negative HUGE_VAL
(see section Mathematics), depending on
the sign of the value. Similarly, if the value is not representable
because of underflow, strtod
returns zero. It also sets errno
to ERANGE
if there was overflow or underflow.
Since the value zero which is returned in the error case is also a valid
result the user should set the global variable errno
to zero
before calling this function. So one can test for failures after the
call since all failures set errno
to a non-zero value.
strtod
function but it returns a
float
value instead of a double
value. If the precision
of a float
value is sufficient this function should be used since
it is much faster than strtod
on some architectures. The reasons
are obvious: IEEE 754 defines float
to have a mantissa of 23
bits while double
has 53 bits and every additional bit of
precision can require additional computation.
If the string has valid syntax for a floating-point number but the value
is not representable because of overflow, strtof
returns either
positive or negative HUGE_VALf
(see section Mathematics), depending on
the sign of the value.
This function is a GNU extension.
strtod
function but it returns a
long double
value instead of a double
value. It should be
used when high precision is needed. On systems which define a long
double
type (i.e., on which it is not the same as double
)
running this function might take significantly more time since more bits
of precision are required.
If the string has valid syntax for a floating-point number but the value
is not representable because of overflow, strtold
returns either
positive or negative HUGE_VALl
(see section Mathematics), depending on
the sign of the value.
This function is a GNU extension.
As for the integer parsing functions there are additional functions which will handle numbers represented using the grouping scheme of the current locale (see section Parsing of Integers).
strtod
function, except that it
need not detect overflow and underflow errors. The atof
function
is provided mostly for compatibility with existing code; using
strtod
is more robust.
Go to the first, previous, next, last section, table of contents.