March 12, 2006 STRTOD 3

### NAME

strtod, strtof, strtold - convert ASCII string to double, float, or long double

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```double` strtod(```const char * restrict nptr``, char ** restrict endptr`)
```float` strtof(```const char * restrict nptr``, char ** restrict endptr`)
```long` `double` strtold(```const char * restrict nptr``, char ** restrict endptr`)

### DESCRIPTION

The strtod(``) function converts the initial portion of the string pointed to by ```nptr` to double representation.

The strtof(``) function converts the initial portion of the string pointed to by ```nptr` to float representation.

The strtold(``) function converts the initial portion of the string pointed to by ```nptr` to long double representation.

The expected form of the string is an optional plus (`+') or minus sign (`-') followed by one of the following:

  - a sequence of digits optionally containing a decimal-point character, optionally followed by an exponent. An exponent consists of an `E' or `e', followed by an optional plus or minus sign, followed by a sequence of digits.

  - one of ```INF` or ```INFINITY`, ignoring case.

  - one of ```NAN` or ```NAN(n-char-sequence-opt)`, ignoring case. This implementation currently does not interpret such a sequence.

Leading white-space characters in the string (as defined by the isspace(3) function) are skipped.

### RETURN VALUES

The strtod(``), strtof(``), and strtold(``) functions return the converted value, if any.

A character sequence ```INF` or ```INFINITY` is converted to , if supported, else to the largest finite floating-point number representable on the machine (i.e., VAX).

A character sequence ```NAN` or ```NAN(n-char-sequence-opt)` is converted to a quiet , if supported, else remains unrecognized (i.e., VAX).

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 ```endptr`.

If no conversion is performed, zero is returned and the value of ```nptr` is stored in the location referenced by ```endptr`.

If the correct value would cause overflow, plus or minus ```HUGE_VAL`, ```HUGE_VALF`, or ```HUGE_VALL` is returned (according to the return type and sign of the value), and ```ERANGE` is stored in errno. If the correct value would cause underflow, zero is returned and ```ERANGE` is stored in errno.

### ERRORS

[```ERANGE`]
  Overflow or underflow occurred.

### SEE ALSO

atof(3), atoi(3), atol(3), math(3), strtol(3), strtoul(3)

### STANDARDS

The strtod(``) function conforms to ANSI X3.159-1989 (``ANSI C89'') . The strtof(``) and strtold(``) functions conform to ISO/IEC 9899:1999 (``ISO C99'') .

### HISTORY

The strtof(``) and strtold(``) functions appeared in NetBSD4.0.