標準/拡張機能 | 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 つの部分に分解します。
その後、サブジェクト・シーケンスの浮動小数点数への変換を 試みてから、結果を戻します。
サブジェクト・シーケンスの予期される形式は、オプションの正符号 (+) または負符号 (-) と、それに続く次のいずれかです。
サブジェクト・シーケンスは、最初の非空白ワイド文字から始まる、入力ストリングの最長の初期サブシーケンスとして定義されて います。これが想定される形式です。サブジェクト・シーケンスは、入力ストリングが期待した形式でない場合、文字を含みません。
文字シーケンス 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、または変換に使用されない入力ストリングの最初の文字のアドレスが入っている出力ポインター・フィールドを指すポインター。 |
これらの関数は、変換された値 (存在する場合) を戻します。変換が行われなかった場合、+0.E0DF、+0.E0DD、または +0.E0DL が戻されます。正しい値が表現可能な値の範囲外の場合、プラスまたはマイナスの HUGE_VAL_D32、HUGE_VAL_D64、または HUGE_VAL_D128 が戻されます (値の戻りの型および符号によります)。結果がアンダーフローの場合、これらの関数は、絶対値が戻りの型の最小正規化正数より大きくない値を戻します。シグナル NaN を戻すポイントでは、シグナルは起こされません。
errno | 説明 |
---|---|
ERANGE | 入力ストリングは、出力 10 進浮動小数点型には大きすぎる値を表します。 |
例については、strtod() - 文字ストリングの double 型への変換を参照してください。