strtod

出典: フリー百科事典『ウィキペディア(Wikipedia)』

strtod (string to double) とは、引数の文字列をdouble型に変換するC言語標準Cライブラリ関数である。stdlib.hに定義されている。

形式[編集]

#include <stdlib.h>
double strtod(const char *nptr, char **endptr);

C99以降は以下のようなプロトタイプである。

double strtod(const char * restrict nptr, char ** restrict endptr);

機能[編集]

引数[編集]

第1引数nptrの文字列では、+もしくは-の後に、以下のものを続けて書くことができる。

符号は省略することもできる。

また、INFの代わりにINFINITYと書くこともできる。 INFはその前が+ならば正の無限大に、-ならば負の無限大になる。

第2引数endptrNULLでない場合、endptrが指しているアドレスに変換終了位置へのポインタが保存される。

戻り値[編集]

変換が成功した場合、変換した値を返す。

変換に失敗した場合、0を返す。

正しい値がオーバーフローを起こす場合、その値の符号に応じて正もしくは負のHUGE_VALを返し、errnoERANGEが代入される。

正しい値がアンダーフローを起こす場合、絶対値がdouble型の中で最も小さく正規化された正の数DBL_MIN以下であるような値(一般的な実装では0)を返す。errnoERANGEが代入されるかどうかは実装定義である[注釈 1]

strtof[編集]

C99以降は、戻り値がfloat型で、オーバーフロー時には正または負のHUGE_VALFを返すstrtofも規定されている。

#include <stdlib.h>
float strtof(const char * restrict nptr, char ** restrict endptr);

strtold[編集]

C99以降は、戻り値がlong double型で、オーバーフロー時には正または負のHUGE_VALLを返すstrtoldも規定されている。

#include <stdlib.h>
long double strtold(const char * restrict nptr, char ** restrict endptr);

atof[編集]

同様の機能を持つ標準関数にatofがあるが、こちらはエラーが発生した場合の動作が規定されておらず、strtodと比べて堅牢性に欠けるため、atofを非推奨としているガイドラインもある[1]

脚注[編集]

注釈[編集]

  1. ^ ISO/IEC 9899:1999の「7.20.1.3 The strtod, strtof, and strtold functions」を参照のこと。

出典[編集]

関連項目[編集]

外部リンク[編集]