WCSTOD(3C) Standard C Library Functions WCSTOD(3C)

## NAME

wcstod, wcstof, wcstold, wstod, watof - convert wide character string to

floating-point number

## SYNOPSIS

#include <wchar.h>

**double wcstod**(**const wchar_t *restrict **__nptr__,

**wchar_t **restrict **__endptr__);

**float wcstof**(**const wchar_t *restrict **__nptr__,

**wchar_t **restrict **__endptr__);

**long double wcstold**(**const wchar_t *restrict **__nptr__,

**wchar_t **restrict **__endptr__);

**double wstod**(**const wchar_t ***__nptr__, **wchar_t ****__endptr__);

**double watof**(**wchar_t ***__nptr__);

## DESCRIPTION

The**wcstod()**, **wcstof()**, and **wcstold() **functions convert the initial

portion of the wide-character string pointed to by__nptr__ to **double**, **float**,

and**long double **representation, respectively. They first decompose the

input wide-character string into three parts:

1. An initial, possibly empty, sequence of white-space wide-

character codes (as specified by iswspace(3C))

2. A subject sequence interpreted as a floating-point constant or

representing infinity or NaN

3. A final wide-character string of one or more unrecognized

wide-character codes, including the terminating null wide-

character code of the input wide-character string.

Then they attempt to convert the subject sequence to a floating-point

number, and return the result.

The expected form of the subject sequence is an optional plus or minus

sign, then one of the following:

o A non-empty sequence of decimal digits optionally containing a

radix character, then an optional exponent part

o A 0x or 0X, then a non-empty sequence of hexadecimal digits

optionally containing a radix character, then an optional

binary exponent part

o One of INF or INFINITY, or any other wide string equivalent

except for case

o One of NAN or NAN(__n-wchar-sequence__(__opt__)), or any other wide

string ignoring case in the NAN part, where:

n-wchar-sequence:

digit

nondigit

n-wchar-sequence digit

n-wchar-sequence nondigit

In default mode for**wcstod()**, only decimal, INF/INFINITY, and NAN/NAN(__n-__

__wchar-sequence__) forms are recognized. In C99/SUSv3 mode, hexadecimal

strings are also recognized.

In default mode for**wcstod()**, the __n-wchar-sequence__ in the NAN(__n-wchar-__

__sequence__) form can contain any character except ')' (right parenthesis)

or '\0' (null). In C99/SUSv3 mode, the__n-wchar-sequence__ can contain only

upper and lower case letters, digits, and '_' (underscore).

The**wcstof() **and **wcstold() **functions always function in

C99/SUSv3-conformant mode.

The subject sequence is defined as the longest initial subsequence of the

input wide string, starting with the first non-white-space wide

character, that is of the expected form. The subject sequence contains no

wide characters if the input wide string is not of the expected form.

If the subject sequence has the expected form for a floating-point

number, the sequence of wide characters starting with the first digit or

the radix character (whichever occurs first) is interpreted as a floating

constant according to the rules of the C language, except that the radix

character is used in place of a period, and that if neither an exponent

part nor a radix character appears in a decimal floating-point number, or

if a binary exponent part does not appear in a hexadecimal floating-point

number, an exponent part of the appropriate type with value zero is

assumed to follow the last digit in the string. If the subject sequence

begins with a minus sign, the sequence is interpreted as negated. A wide-

character sequence INF or INFINITY is interpreted as an infinity. A wide-

character sequence NAN or NAN(__n-wchar-sequence__(__opt__)) is interpreted as a

quiet NaN. A pointer to the final wide string is stored in the object

pointed to by__endptr__, provided that __endptr__ is not a null pointer.

If the subject sequence has either the decimal or hexadecimal form, the

value resulting from the conversion is rounded correctly according to the

prevailing floating point rounding direction mode. The conversion also

raises floating point inexact, underflow, or overflow exceptions as

appropriate.

The radix character is defined in the program's locale (category

**LC_NUMERIC**). In the POSIX locale, or in a locale where the radix

character is not defined, the radix character defaults to a period ('.').

If the subject sequence is empty or does not have the expected form, no

conversion is performed; the value of__nptr__ is stored in the object

pointed to by__endptr__, provided that __endptr__ is not a null pointer.

The**wcstod() **function does not change the setting of **errno **if successful.

The**wstod() **function is identical to **wcstod()**.

The**watof**(__str__) function is equivalent to **wstod(**__nptr__**, (wchar_t **)NULL)**.

## RETURN VALUES

Upon successful completion, these functions return the converted value.

If no conversion could be performed,**0 **is returned.

If the correct value is outside the range of representable values,

**+-HUGE_VAL**, **+-HUGE_VALF**, or **+-HUGE_VALL **is returned (according to the

sign of the value), a floating point overflow exception is raised, and

**errno **is set to **ERANGE**. **HUGE_VAL**, **HUGE_VALF**, and **HUGE_VALL **are described

in math.h(3HEAD).

If the correct value would cause an underflow, the correctly rounded

result (which may be normal, subnormal, or zero) is returned, a floating

point underflow exception is raised, and**errno **is set to **ERANGE**.

## ERRORS

The**wcstod() **and **wstod() **functions will fail if:

**ERANGE**

The value to be returned would cause overflow or underflow.

The**wcstod() **and **wcstod() **functions may fail if:

**EINVAL**

No conversion could be performed.

## USAGE

Because 0 is returned on error and is also a valid return on success, an

application wishing to check for error situations should set**errno **to 0

call**wcstod()**, **wcstof()**, **wcstold()**, or **wstod()**, then check **errno **and if

it is non-zero, assume an error has occurred.

## ATTRIBUTES

See attributes(7) for descriptions of the following attributes:

+--------------------+-------------------------+

|ATTRIBUTE TYPE | ATTRIBUTE VALUE |

+--------------------+-------------------------+

|Interface Stability |**wcstod()**, **wcstof()**, and |

| |**wcstold() **are Standard. |

+--------------------+-------------------------+

|MT-Level | MT-Safe |

+--------------------+-------------------------+

## SEE ALSO

iswspace(3C), localeconv(3C), scanf(3C), setlocale(3C), wcstol(3C),

math.h(3HEAD), attributes(7), standards(7)

illumos April 21, 2021 WCSTOD(3C)

wcstod, wcstof, wcstold, wstod, watof - convert wide character string to

floating-point number

#include <wchar.h>

The

portion of the wide-character string pointed to by

and

input wide-character string into three parts:

1. An initial, possibly empty, sequence of white-space wide-

character codes (as specified by iswspace(3C))

2. A subject sequence interpreted as a floating-point constant or

representing infinity or NaN

3. A final wide-character string of one or more unrecognized

wide-character codes, including the terminating null wide-

character code of the input wide-character string.

Then they attempt to convert the subject sequence to a floating-point

number, and return the result.

The expected form of the subject sequence is an optional plus or minus

sign, then one of the following:

o A non-empty sequence of decimal digits optionally containing a

radix character, then an optional exponent part

o A 0x or 0X, then a non-empty sequence of hexadecimal digits

optionally containing a radix character, then an optional

binary exponent part

o One of INF or INFINITY, or any other wide string equivalent

except for case

o One of NAN or NAN(

string ignoring case in the NAN part, where:

n-wchar-sequence:

digit

nondigit

n-wchar-sequence digit

n-wchar-sequence nondigit

In default mode for

strings are also recognized.

In default mode for

or '\0' (null). In C99/SUSv3 mode, the

upper and lower case letters, digits, and '_' (underscore).

The

C99/SUSv3-conformant mode.

The subject sequence is defined as the longest initial subsequence of the

input wide string, starting with the first non-white-space wide

character, that is of the expected form. The subject sequence contains no

wide characters if the input wide string is not of the expected form.

If the subject sequence has the expected form for a floating-point

number, the sequence of wide characters starting with the first digit or

the radix character (whichever occurs first) is interpreted as a floating

constant according to the rules of the C language, except that the radix

character is used in place of a period, and that if neither an exponent

part nor a radix character appears in a decimal floating-point number, or

if a binary exponent part does not appear in a hexadecimal floating-point

number, an exponent part of the appropriate type with value zero is

assumed to follow the last digit in the string. If the subject sequence

begins with a minus sign, the sequence is interpreted as negated. A wide-

character sequence INF or INFINITY is interpreted as an infinity. A wide-

character sequence NAN or NAN(

quiet NaN. A pointer to the final wide string is stored in the object

pointed to by

If the subject sequence has either the decimal or hexadecimal form, the

value resulting from the conversion is rounded correctly according to the

prevailing floating point rounding direction mode. The conversion also

raises floating point inexact, underflow, or overflow exceptions as

appropriate.

The radix character is defined in the program's locale (category

character is not defined, the radix character defaults to a period ('.').

If the subject sequence is empty or does not have the expected form, no

conversion is performed; the value of

pointed to by

The

The

The

Upon successful completion, these functions return the converted value.

If no conversion could be performed,

If the correct value is outside the range of representable values,

sign of the value), a floating point overflow exception is raised, and

in math.h(3HEAD).

If the correct value would cause an underflow, the correctly rounded

result (which may be normal, subnormal, or zero) is returned, a floating

point underflow exception is raised, and

The

The value to be returned would cause overflow or underflow.

The

No conversion could be performed.

Because 0 is returned on error and is also a valid return on success, an

application wishing to check for error situations should set

call

it is non-zero, assume an error has occurred.

See attributes(7) for descriptions of the following attributes:

+--------------------+-------------------------+

|ATTRIBUTE TYPE | ATTRIBUTE VALUE |

+--------------------+-------------------------+

|Interface Stability |

| |

+--------------------+-------------------------+

|MT-Level | MT-Safe |

+--------------------+-------------------------+

iswspace(3C), localeconv(3C), scanf(3C), setlocale(3C), wcstol(3C),

math.h(3HEAD), attributes(7), standards(7)

illumos April 21, 2021 WCSTOD(3C)