1 WCSTOD(3C)               Standard C Library Functions               WCSTOD(3C)
   2 
   3 
   4 
   5 NAME
   6        wcstod, wcstof, wcstold, wstod, watof - convert wide character string
   7        to floating-point number
   8 
   9 SYNOPSIS
  10        #include <wchar.h>
  11 
  12        double wcstod(const wchar_t *restrict nptr,
  13             wchar_t **restrict endptr);
  14 
  15 
  16        float wcstof(const wchar_t *restrict nptr,
  17             wchar_t **restrict endptr);
  18 
  19 
  20        long double wcstold(const wchar_t *restrict nptr,
  21             wchar_t **restrict endptr);
  22 
  23 
  24        double wstod(const wchar_t *nptr, wchar_t **endptr);
  25 
  26 
  27        double watof(wchar_t *nptr);
  28 
  29 
  30 DESCRIPTION
  31        The wcstod(), wcstof(), and wcstold() functions convert the initial
  32        portion of the wide-character string pointed to by nptr to double,
  33        float, and long double representation, respectively.  They first
  34        decompose the input wide-character string into three parts:
  35 
  36            1.     An initial, possibly empty, sequence of white-space wide-
  37                   character codes (as specified by iswspace(3C))
  38 
  39            2.     A subject sequence interpreted as a floating-point constant
  40                   or representing infinity or NaN
  41 
  42            3.     A final wide-character string of one or more unrecognized
  43                   wide-character codes, including the terminating null wide-
  44                   character code of the input wide-character string.
  45 
  46 
  47        Then they attempt to convert the subject sequence to a floating-point
  48        number, and return the result.
  49 
  50 
  51        The expected form of the subject sequence is an optional plus or minus
  52        sign, then one of the following:
  53 
  54            o      A non-empty sequence of decimal digits optionally containing
  55                   a radix character, then an optional exponent part
  56 
  57            o      A 0x or 0X, then a non-empty sequence of hexadecimal digits
  58                   optionally containing a radix character, then an optional
  59                   binary exponent part
  60 
  61            o      One of INF or INFINITY, or any other wide string equivalent
  62                   except for case
  63 
  64            o      One of NAN or NAN(n-wchar-sequence(opt)), or any other wide
  65                   string ignoring case in the NAN part, where:
  66 
  67                     n-wchar-sequence:
  68                         digit
  69                         nondigit
  70                         n-wchar-sequence digit
  71                         n-wchar-sequence nondigit
  72 
  73 
  74 
  75        In default mode for wcstod(), only decimal, INF/INFINITY, and
  76        NAN/NAN(n-wchar-sequence) forms are recognized. In C99/SUSv3 mode,
  77        hexadecimal strings are also recognized.
  78 
  79 
  80        In default mode for wcstod(), the n-wchar-sequence in the NAN(n-wchar-
  81        sequence) form can contain any character except ')' (right parenthesis)
  82        or '\0' (null).  In C99/SUSv3 mode, the n-wchar-sequence can contain
  83        only upper and lower case letters, digits, and '_' (underscore).
  84 
  85 
  86        The wcstof() and wcstold() functions always function in
  87        C99/SUSv3-conformant mode.
  88 
  89 
  90        The subject sequence is defined as the longest initial subsequence of
  91        the input wide string, starting with the first non-white-space wide
  92        character, that is of the expected form. The subject sequence contains
  93        no wide characters if the input wide string is not of the expected
  94        form.
  95 
  96 
  97        If the subject sequence has the expected form for a floating-point
  98        number, the sequence of wide characters starting with the first digit
  99        or the radix character (whichever occurs first) is interpreted as a
 100        floating constant according to the rules of the C language, except that
 101        the radix character is used in place of a period, and that if neither
 102        an exponent part nor a radix character appears in a decimal floating-
 103        point number, or if a binary exponent part does not appear in a
 104        hexadecimal floating-point number, an exponent part of the appropriate
 105        type with value zero is assumed to follow the last digit in the string.
 106        If the subject sequence begins with a minus sign, the sequence is
 107        interpreted as negated. A wide-character sequence INF or INFINITY is
 108        interpreted as an infinity. A wide-character sequence NAN or NAN(n-
 109        wchar-sequence(opt)) is interpreted as a quiet NaN. A pointer to the
 110        final wide string is stored in the object pointed to by endptr,
 111        provided that endptr is not a null pointer.
 112 
 113 
 114        If the subject sequence has either the decimal or hexadecimal form, the
 115        value resulting from the conversion is rounded correctly according to
 116        the prevailing floating point rounding direction mode. The conversion
 117        also raises floating point inexact, underflow, or overflow exceptions
 118        as appropriate.
 119 
 120 
 121        The radix character is defined in the program's locale (category
 122        LC_NUMERIC). In the POSIX locale, or in a locale where the radix
 123        character is not defined, the radix character defaults to a period
 124        ('.').
 125 
 126 
 127        If the subject sequence is empty or does not have the expected form, no
 128        conversion is performed; the value of  nptr is stored in the object
 129        pointed to by endptr, provided that  endptr is not a null pointer.
 130 
 131 
 132        The wcstod() function does not change the setting of errno if
 133        successful.
 134 
 135 
 136        The wstod() function is identical to wcstod().
 137 
 138 
 139        The watof(str) function is equivalent to wstod(nptr, (wchar_t **)NULL).
 140 
 141 RETURN VALUES
 142        Upon successful completion, these functions return the converted value.
 143        If no conversion could be performed, 0 is returned.
 144 
 145 
 146        If the correct value is outside the range of representable values,
 147        +-HUGE_VAL, +-HUGE_VALF, or +-HUGE_VALL is returned (according to the
 148        sign of the value), a floating point overflow exception is raised, and
 149        errno is set to ERANGE.
 150 
 151 
 152        If the correct value would cause an underflow, the correctly rounded
 153        result (which may be normal, subnormal, or zero) is returned, a
 154        floating point underflow exception is raised, and errno is set to
 155        ERANGE.
 156 
 157 ERRORS
 158        The wcstod() and wstod() functions will fail if:
 159 
 160        ERANGE
 161                  The value to be returned would cause overflow or underflow.
 162 
 163 
 164 
 165        The wcstod() and wcstod() functions may fail if:
 166 
 167        EINVAL
 168                  No conversion could be performed.
 169 
 170 
 171 USAGE
 172        Because 0 is returned on error and is also a valid return on success,
 173        an application wishing to check for error situations should set errno
 174        to 0 call wcstod(), wcstof(), wcstold(), or wstod(), then check  errno
 175        and if it is non-zero, assume an error has occurred.
 176 
 177 ATTRIBUTES
 178        See attributes(5) for descriptions of the following attributes:
 179 
 180 
 181 
 182 
 183        +--------------------+-------------------------+
 184        |ATTRIBUTE TYPE      | ATTRIBUTE VALUE         |
 185        +--------------------+-------------------------+
 186        |Interface Stability | wcstod(), wcstof(), and |
 187        |                    | wcstold() are Standard. |
 188        +--------------------+-------------------------+
 189        |MT-Level            | MT-Safe                 |
 190        +--------------------+-------------------------+
 191 
 192 SEE ALSO
 193        iswspace(3C), localeconv(3C), scanf(3C), setlocale(3C), wcstol(3C),
 194        attributes(5), standards(5)
 195 
 196 
 197 
 198                                 August 25, 2019                     WCSTOD(3C)