strtod32()、strtod64()、strtod128() - 文字ストリングを 10 進数浮動小数点に変換

標準

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

形式

#define __STDC_WANT_DEC_FP__
#include <stdlib.h>

_Decimal32 strtod32(const char * __restrict__ nptr, char ** __restrict__ endptr);
_Decimal64 strtod64(const char * __restrict__ nptr, char ** __restrict__ endptr);
_Decimal128 strtod128(const char * __restrict__ nptr, char ** __restrict__ endptr);

機能説明

strtod32()、strtod64()、および strtod128() 関数は、nptr が指すストリングの先頭部分を、それぞれ _Decimal32、_Decimal64、および _Decimal128 表記に変換します。

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

  1. 空白文字 (isspace() 関数によって指定された) の先頭シーケンス (空の場合がある)。
  2. 浮動小数点定数に似ているか、無限大または NAN を表現するサブジェクト・シーケンス。
  3. 入力ストリングの終了ヌル文字を含む、1 つ以上の未承認文字からなる最終ストリング。

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

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

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

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

文字シーケンス NAN、NANQ、NAN(n-char-sequence)、または NANQ(n-char-sequence) は静止 NaN と解釈されます。NANS または NANS(n-char-sequence) の文字シーケンスは、 シグナル NaN と解釈されます。文字シーケンス 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 進浮動小数点型には大きすぎる値を表します。

例については、strtod() - 文字ストリングの double 型への変換を参照してください。

関連情報