strtod

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