atof() — 文字ストリングから浮動小数点への変換

フォーマット

#include <stdlib.h>
double atof(const char *string);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。詳細については、CCSID およびロケールの理解を参照してください。

説明

atof() 関数は文字ストリングを倍精度浮動小数点値に変換します。

入力データ string は、指定した戻りの型の数値として解釈できる文字のシーケンスです。 関数によって、数値の一部として認識できない入力ストリングは、先頭文字 のところで読み取りが停止されます。この文字は、ストリングを終了するヌル文字が可能です。

atof() 関数では、次の形式の string をとります。

構文図を読む構文図をスキップする
>>-+------------+--+-----+--+-digits--+---+--+--------+-+------->
   '-whitespace-'  +- + -+  |         '-.-'  '-digits-' |   
                   '- – -'  '-.--digits-----------------'   

>--+------------------------+----------------------------------><
   '-+-e-+--+-----+--digits-'   
     '-E-'  +- + -+             
            '- – -'             

空白文字は、複数のスペースやタブなどの、isspace() 関数に対して true である同じ文字で構成されます。 atof() 関数は、最初の空白文字を無視します。

atof() 関数の場合、digits は 1 桁以上の小数桁数です。小数点の前に桁数が表示されていない場合は、少なくとも 1 桁が小数点の後ろに表示される必要があります。 小数桁数は指数よりも前に置くことができ、小数桁数の後ろに文字 e または E を入れて指数を表します。指数は 10 進数の整数で、符号付きの場合があります。

atof() 関数は、数字以外の文字が E の後ろに続く場合、または指数として e が読み込まれた場合には失敗します。例えば、100elf は浮動小数点値 100.0 に変換されます。 精度は最大 17 桁の有効文字桁です。

戻り値

atof() 関数は、入力文字を数字として解釈することにより作成される double 値を戻します。 関数が入力データをその型の値に変換できない場合は、戻り値は 0 です。 オーバーフローの場合は、関数は errnoERANGE を設定し、値 -HUGE_VAL または +HUGE_VAL を戻します。

この例は、ストリングとして格納された数を、数値に変換する方法を示しています。
#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
    double x;
    char *s;
 
    s = " -2309.12E-15";
    x = atof(s);     /* x = -2309.12E-15 */
 
    printf("x = %.4e¥n",x);
}
 
/*******************  Output should be similar to:  ***************
 
x = -2.3091e-12
*/