Converts a wide character string to a double-precision number.

#include <stdlib.h>

double wcstod (Nptr,Endptr)const wchar_t *Nptr;wchar_t **Endptr;

The **wcstod** subroutine converts the initial portion of the wide character string pointed to by the *Nptr* parameter to a double-precision number. The input wide character string is first broken down into three parts:

- An initial, possibly empty, sequence of white-space wide character codes (as specified by the
**iswspace**subroutine) - A subject sequence interpreted as a floating-point constant
- A final wide character string of one or more unrecognized wide character codes (including the terminating wide character null)

The subject sequence is then (if possible) converted to a floating-point number and returned as the result of the **wcstod** subroutine.

The subject sequence is expected to consist of an optional + (plus sign) or - (minus sign), a non-empty sequence of digits (which may contain a radix), and an optional exponent. The exponent consists of e or E, followed by an optional sign, followed by one or more decimal digits. The subject sequence is the longest initial sub-sequence of the input wide character string (starting with the first non-white-space wide character code) that is of the expected form. The subject sequence contains no wide character codes if the input wide character string is empty or consists entirely of white-space wide character codes, or if the first non-white-space wide character code is other than a sign, a digit, or a radix.

If the subject sequence is valid, the sequence of wide character codes starting with the first digit or radix (whichever occurs first) is interpreted as a float or double constant. If the radix is used in place of a period, and if either an exponent or radix does not appear, a radix is assumed to follow the last digit in the wide character string. If the subject sequence begins with a - (minus sign), the conversion value is negated. A pointer to the final wide character string is stored in the object pointed to by the *Endptr* parameter, unless it specifies a null pointer. The radix is defined by the **LC_NUMERIC** category. In the C locale, or in a locale where the radix is not defined, the radix defaults to a period.

The **wcstod** subroutine returns a converted double-precision value if a valid floating-point constant is found. If no conversion could be performed, a value of 0 is returned. If the converted value is outside the range (either too high or too low), the **errno** global variable is set to **ERANGE**. In case of overflow, plus or minus **HUGE_VAL** is returned. In the case of underflow, a value of 0 is returned. If the subject sequence is empty or does not have the expected form, no conversion is performed. In this case, the value specified by the *Nptr* parameter is stored in the object pointed to by the *Endptr* parameter, provided that the *Endptr* parameter is not a null pointer.

This subroutine is part of Base Operating System (BOS) Runtime.

The **iswspace** subroutine, **wcstol** subroutine, **wcstoul** subroutine.

National Language Support Overview for Programming, Subroutines Overview, Understanding Wide Character String Conversion Subroutines in *AIX Version 4.3 General Programming Concepts: Writing and Debugging Programs*.