| STRTOD(3) | Library Functions Manual | STRTOD(3) | 
strtod, strtof,
  strtold —
#include <stdlib.h>
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);
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:
INF or INFINITY,
      ignoring case.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.
strtod(), strtof(), and
  strtold() functions return the converted value, if
  any.
A character sequence INF or
    INFINITY is converted to infinity, 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
    NaN, 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 is too large in magnitude to be represented
    (‘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 is too small in magnitude to be represented
    normally with full precision (‘underflow’), the closest
    subnormal value, or zero, is returned, and ERANGE is
    stored in errno.
strtod(), strtof(), or
  strtold(); in the case of no underflow or overflow,
  these functions preserve errno.
To check for syntax errors, callers must also check whether endptr was updated to reflect the true end of the string in order to determine whether the full string was consumed or whether there were additional erroneous characters in it.
char *end;
double d;
...
errno = 0;
d = strtod(s, &end);
if (end == s)
	errx(EXIT_FAILURE, "invalid syntax");
if (end[0] != '\0')
	errx(EXIT_FAILURE, "trailing garbage");
if (errno) {
	assert(errno == ERANGE);
	assert(isinf(d) || d == 0 ||
	    fpclassify(d) == FP_SUBNORMAL);
	warnx("%s", isinf(d) ? "overflow" : "underflow");
}
/* d is the best floating-point approximation to the number in s */
ERANGE]strtod() function conforms to ANSI
  X3.159-1989 (“ANSI C89”). The
  strtof() and strtold()
  functions conform to ISO/IEC 9899:1999
  (“ISO C99”).
strtof() and strtold()
  functions appeared in NetBSD 4.0.
| November 4, 2016 | NetBSD 9.3 |