名前空間
変種
操作

atof

From cppreference.com
< c‎ | string‎ | byte
ヘッダー <stdlib.h> で定義
double atof( const char* str );

str で指されるバイト文字列内の浮動小数点値を解釈します。

関数は、最初の非空白文字が見つかるまで、任意の空白文字(isspace によって決定される)を破棄します。次に、有効な浮動小数点表現を形成するために可能な限り多くの文字を取得し、それらを浮動小数点値に変換します。有効な浮動小数点値は、次のいずれかになります。

  • 10進数浮動小数点表記。以下の部分から構成されます。
  • (任意)プラスまたはマイナスの記号
  • 十進数の数字の空でないシーケンス。必要に応じて小数点文字(現在の C ロケールによって決定される)を含む(仮数部を定義する)。
  • (任意)eまたはE、それにオプションのマイナスまたはプラス記号と10進数字の非空のシーケンスが続く(10を底とする指数を定義する)。
  • 16進数浮動小数点表記。以下の部分から構成されます。
  • (任意)プラスまたはマイナスの記号
  • 0xまたは0X
  • 16進数の数字の空でないシーケンス。必要に応じて小数点文字(現在の C ロケールによって決定される)を含む(仮数部を定義する)。
  • (任意)pまたはP、それにオプションのマイナスまたはプラス記号と10進数字の非空のシーケンスが続く(2を底とする指数を定義する)。
  • 無限大表記。以下の部分から構成されます。
  • (任意)プラスまたはマイナスの記号
  • INFまたはINFINITY(大文字・小文字を区別しない)。
  • 非数(NaN)表記。以下の部分から構成されます。
  • (任意)プラスまたはマイナスの記号
  • NANまたはNAN(char_sequence )NAN部分の大文字・小文字は区別しない。*char_sequence*は数字、ラテン文字、アンダースコアのみを含むことができる。結果はクワイエットNaN浮動小数点値となる。
(C99以降)
  • 現在インストールされている C ロケールによって受け入れられる可能性のあるその他の任意の式。

目次

[編集] パラメータ

str - 解釈されるヌル終端バイト文字列へのポインタ

[編集] 戻り値

double 成功した場合、str の内容に対応する値。変換された値が戻り値の型の範囲外になる場合、戻り値は未定義です。変換が実行できない場合、0.0 が返されます。

[編集]

この名前は「ASCII to float」の略です。

[編集]

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    printf("%g\n", atof("  -0.0000000123junk"));
    printf("%g\n", atof("0.012"));
    printf("%g\n", atof("15e16"));
    printf("%g\n", atof("-0x1afp-2"));
    printf("%g\n", atof("inF"));
    printf("%g\n", atof("Nan"));
    printf("%g\n", atof("1.0e+309"));   // UB: out of range of double
    printf("%g\n", atof("0.0"));
    printf("%g\n", atof("junk"));       // no conversion can be performed
}

実行結果の例

-1.23e-08
0.012
1.5e+17
-107.75
inf
nan
inf
0
0

[編集] 参考文献

  • C23標準 (ISO/IEC 9899:2024)
  • 7.22.1.1 atof 関数 (p: TBD)
  • C17標準 (ISO/IEC 9899:2018)
  • 7.22.1.1 atof 関数 (p: TBD)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.22.1.1 atof 関数 (p: 341)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.20.1.1 atof 関数 (p: 307)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 4.10.1.1 atof 関数

[編集] 関連項目

バイト文字列を浮動小数点値に変換する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)