Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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/ に書かれている。