strtod

STRTOD(3)                   Linux Programmer's Manual                  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():
           _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
           または cc -std=c99

説明
       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 で参照される場所へ保存される。

       変換が行われなかったときには 0 が返る。そして endptr が参照している場所に nptr の値 (変換対象である文字列の開始アドレス)
       が保存される。

       正しい形式の数値文字列であるが、変換結果がオーバーフローを起こした場合 には、プラスまたはマイナスの HUGE_VAL (HUGE_VALF,
       HUGE_VALL)  が返り (値の符号による)、 ERANGE errno に代入される。変換結果がアンダーフローを起こした場合には 0
       が返り、 ERANGE errno に代入される。

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

属性
   マルチスレッディング (pthreads(7) 参照)
       関数 strtod(), strtof(), strtold() は、例外付きのスレッドセーフである。実行中に setlocale(3)
       を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。

準拠
       C89 では strtod()  が、C99 では残りの 2 つの関数が記述されている。

注意
       成功、失敗どちらの場合でも 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), strtol(3),
       strtoul(3)

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



Linux                              2014-08-19                          STRTOD(3)