# strtod

## NAME



           strtod, strtof, strtold - convert ASCII string to floating-point
           number
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <stdlib.h>**
    
           **double strtod(const char *restrict** _nptr_**,**
                         **char **_Nullable restrict** _endptr_**);**
           **float strtof(const char *restrict** _nptr_**,**
                         **char **_Nullable restrict** _endptr_**);**
           **long double strtold(const char *restrict** _nptr_**,**
                         **char **_Nullable restrict** _endptr_**);**
    
       Feature Test Macro Requirements for glibc (see
       feature_test_macros(7)):
    
           **strtof**(), **strtold**():
               _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
    


## DESCRIPTION



           The **strtod**(), **strtof**(), and **strtold**() functions convert the
           initial portion of the string pointed to by _nptr_ to _double_ , _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 nonempty 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 nonempty 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
           string, _(n-char-sequence)_ , where _n-char-sequence_ specifies in an
           implementation-dependent way the type of NAN (see VERSIONS).
    


## 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 _endptr_.
    
           If no conversion is performed, zero is returned and (unless _endptr_
           is null) 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, a value with magnitude
           no larger than **DBL_MIN** , **FLT_MIN** , or **LDBL_MIN** is returned and
           **ERANGE** is stored in _errno_.
    


## ERRORS



           **ERANGE** Overflow or underflow occurred.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌───────────────────────────────┬───────────────┬────────────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├───────────────────────────────┼───────────────┼────────────────┤
           │ **strtod**(), **strtof**(), **strtold**() │ Thread safety │ MT-Safe locale │
           └───────────────────────────────┴───────────────┴────────────────┘
    


## VERSIONS



           In the glibc implementation, the _n-char-sequence_ that optionally
           follows "NAN" is interpreted as an integer number (with an
           optional '0' or '0x' prefix to select base 8 or 16) that is to be
           placed in the mantissa component of the returned value.
    


## STANDARDS



           C11, POSIX.1-2008.
    


## CAVEATS



           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 nonzero value after the call.
    


## EXAMPLES



           See the example on the strtol(3) manual page; the use of the
           functions described in this manual page is similar.
    


* * *