wcstod32()、wcstod64()、wcstod128() - ワイド文字ストリングを 10 進数浮動小数点に変換

標準

標準/拡張機能 C/C++ 依存項目
C/C++ DFP 両方 z/OS® V1.8

形式

#define __STDC_WANT_DEC_FP__
#include <wchar.h>

_Decimal32 wcstod32(const wchar_t * __restrict__ nptr, 
                          wchar_t ** __restrict__ endptr);

_Decimal64 wcstod64(const wchar_t * __restrict__ nptr, 
                          wchar_t ** __restrict__ endptr);

_Decimal128 wcstod128(const wchar_t * __restrict__ nptr, 
                            wchar_t ** __restrict__ endptr);

機能説明

wcstod32()、wcstod64()、および wcstod128() 関数は、nptr が指すワイド文字ストリングの先頭部分を、それぞれ _Decimal32、_Decimal64、および _Decimal128 表記に変換します。

最初に、これらは入力ワイド文字ストリングを 3 つの部分に分解します。

  1. (iswspace() 関数が指定したとおり)、空の可能性がある空白ワイド文字の 先頭シーケンス。
  2. 浮動小数点定数に似ているか、無限大または NAN を表現するサブジェクト・シーケンス。
  3. 入力ワイド文字ストリングの終了ヌルワイド文字を含む、1 つ以上の認識されないワイド文字の最終ワイド文字ストリング。

その後、サブジェクト・シーケンスの浮動小数点数への変換を 試みてから、結果を戻します。

サブジェクト・シーケンスの予期される形式は、オプションの正符号 (+) または負符号 (-) と、それに続く次のいずれかです。

注: 入力ストリングがこれらの 1 つの形式でない場合 (例えば「INFINITE」)、出力結果は未定義です。

サブジェクト・シーケンスは、最初の非空白ワイド文字から始まる、入力ワイド文字ストリングの最長の初期サブシーケンスとして定義されて います。これが想定される形式です。サブジェクト・シーケンスは、入力ワイド文字ストリングが想定される形式でない場合、ワイド文字を含みません。

サブジェクト・シーケンスに想定される浮動小数点数の形式がある場合には、 最初の数字または 10 進小数点ワイド文字 (どちらでも最初にくる 方) から始まるワイド文字のシーケンスは、浮動小数点定数と解釈され ます。10 進数浮動小数点の数に、指数または小数点文字のいずれも現れない場合、指数 0 がストリングの最後の桁に続くのと同じことになります。サブジェクト・シーケンスが負符号 (-) で始まる場合には、シーケンスは無効になったと解釈されます。ワイド文字シーケンス INF または INFINITY は無限大と解釈されます。ワイド文字シーケンス NAN、NAN()、または NAN(n-char-sequence) は静止 NaN と解釈されます。NANS、NANS()、または NANS(n-char-sequence) のワイド文字シーケンスは、 シグナル NaN と解釈されます。

最終ワイド文字ストリングを指すポインターは、endptr が NULL ポインターでない場合に endptr が指すオブジェクトに保管されます。

変換後の値では、可能な場合、入力データと同じ精度を保持し、値は非正規化されます。そうしないと、丸めが起こります。丸めは否定の後に起こります。

「C」ロケール以外では、追加のロケール固有サブジェクト・シーケンス形式が使用できます。

サブジェクト・シーケンスが空であるか、想定される形式になっていない場合には、変換は行われません。nptr の値は、endptr が NULL ポインターでない場合に、endptr が指すオブジェクトに保管されます。

引数 説明
nptr 変換されるワイド文字ストリングの先頭を指す入力ポインター
endptr NULL、または変換に使用されない入力ワイド文字ストリングの最初のワイド文字のアドレスが入っている出力ポインター・フィールドを指すポインター。
注: IEEE 10 進数浮動小数点を使用するためには、ハードウェアに 10 進数浮動小数点機能 がインストールされている必要があります。

戻り値

関数は、変換された値 (存在する場合) を戻します。変換が行われなかった場合、+0.E0DF、+0.E0DD、または +0.E0DL が戻されます。正しい値が表現可能な値の範囲外の場合、プラスまたはマイナスの HUGE_VAL_D32、HUGE_VAL_D64、または HUGE_VAL_D128 が戻されます (値の戻りの型および符号によります)。結果がアンダーフローの場合、関数は、絶対値が戻りの型の最小正規化正数以下の値を戻します。シグナル NaN を戻すポイントでは、シグナルは起こされません。

errno 説明
ERANGE 入力ワイド文字ストリングは、出力 10 進浮動小数点型には大きすぎる値を表します。

例については、wcstod() - ワイド文字ストリングの double 型浮動小数点への変換を参照してください。

関連情報