The 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:
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 outside the range of a double
, strtod
will signal
overflow or underflow as described in Math Error Reporting.
strtod
recognizes four special input strings. The strings
"inf"
and "infinity"
are converted to ∞,
or to the largest representable value if the floating-point format
doesn't support infinities. You can prepend a "+"
or "-"
to specify the sign. Case is ignored when scanning these strings.
The strings "nan"
and "nan(
chars...)"
are converted
to NaN. Again, case is ignored. If chars... are provided, they
are used in some unspecified fashion to select a particular
representation of NaN (there can be several).
Since zero is a valid result as well as the value returned on error, you
should check for errors in the same way as for strtol
, by
examining errno and tailptr.