STRTOD(3)

名前
strtod, strtof, strtold - ASCII 文字列を浮動小数点実数に変換する

書式
#include <stdlib.h>

double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);

    glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

strtof(), strtold():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

説明
strtod(), strtof(), strtold() 関数は、 nptr が指し示す文字列のはじめの部分を double, float, long double 型の値にそれぞれ変換する。

入力する文字列 (の先頭部分) は以下の形式が期待されている。 先頭にホワイトスペース、 次にプラス ('+') またはマイナス ('-') の記号、 その後に (i) 10 進数、(ii) 16 進数、(iii) 無限、 (iv) NAN (計算できない数、not-a-number) のいずれかがある (ホワイトスペース、符号は省略可能。 ホワイトスペースは isspace(3) で識別される)。

10 進数 は 1 文字以上の 10 進の数字の列からなり、 基を表す文字 (radix charater) (小数点。ロケールに依存するが、通常は '.') が含まれることもある。 この後に 10 進の指数部が続いても良い。 10 進の指数部は 'E' または 'e' と、その後に置かれる正負記号 (省略可)、 およびその後に続く 1 文字以上の 10 進の数字の列からなり、 10 の何乗であるかを表す。

16 進数 は、"0x" または "0X" とその後に続く 1 文字以上の 16 進の数字の列からなり、 基を表す文字が含まれることもある。 この後に 2 進の指数部が続いても良い。 2 進の指数部は 'P' または 'p' と、その後に置かれる正負記号 (省略可)、 およびその後に続く 1 文字以上の 10 進の数字の列から構成され、 2 の何乗であるかを表す。 基を表す文字と 2 進の指数部は、どちらか一方しか存在してはならない。

無限 は "INF" または "INFINITY" で表され、大文字小文字は区別されない。

NAN は "NAN" (大文字小文字は区別されない) で表され、 その後に文字列 (n-char-sequence) が続く場合もある。 (n-char-sequence) は実装に依存する NAN の型を指定する。

返り値
これらの関数は、変換された値があれば、それを返す。

endptr が NULL でないときは、変換に使われた最終文字の次の文字へのポインターが endptr で参照される場所へ保存される。

If no conversion is performed, zero is returned and (unless endptr is null) the value of nptr is stored in the location referenced by endptr.

If the correct value would cause overflow, plus or minus HUGE_VAL, HUGE_VALF, or HUGE_VALL is returned (according to the return type and sign of the value), and ERANGE is stored in errno.

If the correct value would cause underflow, a value with magnitude no larger than DBL_MIN, FLT_MIN, or LDBL_MIN is returned and ERANGE is stored in errno.

エラー

ERANGE
    オーバーフローまたはアンダーフローが起こった。

属性
この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース | 属性 | 値
strtod(), strtof(), strtold() | Thread safety | MT-Safe locale

準拠
POSIX.1-2001, POSIX.1-2008, C99.

strtod() was also described in C89.

注意
成功、失敗どちらの場合でも 0 を返す可能性があるので、 プログラムは呼び出す前に errno を 0 に設定し、呼び出し後に errno が 0 以外の値かどうかを確認しエラーが発生したかどうかを判断する 必要がある。

glibc の実装では、"NAN" の後ろに置くことができる n-char-sequence は、整数値として解釈される (基数の 8 や 16 を示す '0' や '0x' を接頭辞として付けることができる)。 この整数値は返り値の仮数部として使われる。

例
strtol(3) のマニュアルページの例を参照。 このページで説明した関数の使用方法も同様である。

関連項目
atof(3), atoi(3), atol(3), nan(3), nanf(3), nanl(3), strfromd(3), strtol(3), strtoul(3)

この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。