strtod,_strtold,wcstod,_wcstold
stdlib.h:インデックス への移動
ヘッダーファイル
stdlib.h
カテゴリ
変換ルーチン,演算ルーチン
プロトタイプ
double strtod(const char *s, char **endptr);
double wcstod(const wchar_t *s, wchar_t **endptr);
long double _strtold(const char *s, char **endptr);
long double _wcstold(const wchar_t *s, wchar_t **endptr);
説明
文字列を double 型または long double 型の値に変換します。
strtod は,文字列 s を double 型の値に変換します。s は,double 型の値として解釈できる文字列です。文字列は,次の一般形に一致する必要があります。
[ws] [sn] [ddd] [.] [ddd] [fmt[sn]ddd]
記号の意味は次のとおりです。
[ws] |
= |
オプションのホワイトスペース |
[sn] |
= |
オプションの符号(+ または -) |
[ddd] |
= |
オプションの数字 |
[fmt] |
= |
オプションの e または E |
[.] |
= |
オプションの小数点 |
strtod は,+INF と -INF(正と負の無限大),および +NAN と -NAN(非数)も認識します。
たとえば,strtod は,次のような文字列を double に変換できます。
+ 1231.1981 e-1
502.85E2
+ 2010.952
strtod は,double 型の値を構成する適切な文字として解釈できない文字を最初に見つけた時点で,文字列の読み取りを終了します。
endptr が NULL でない場合,strtod は,スキャンを終了した文字を指すように *endptr を設定します(*endptr = &stopper)。endptr は,エラーの検出に役立ちます。
_strtold は long double バージョンで,文字列を long double 型の値に変換します。
戻り値
これらの関数は,s の値を表す double(strtod)または long double(_strtold)を返します。オーバーフローが発生した場合は,正または負の HUGE_VAL(strtod)または _LHUGE_VAL(_strtold)を返します。
例
#include <stdio.h> #include <stdlib.h> int main(void) { char input[80], *endptr; double value; printf("Enter a floating point number:"); gets(input); value = strtod(input, &endptr); printf("The string is %s the number is %lf\n", input, value); return 0; }
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
strtod |
+ |
+ |
+ |
+ |
_strtold |
+ |
|||
wcstod |
+ |
+ |
+ | |
_wcstold |
+ |