頭文件:#include <stdlib.h>
函數 atof() 用於將字符串轉換為雙精度浮點數(double),其原型為:
double atof (const char* str);
atof() 的名字來源於 ascii to floating point numbers 的縮寫,它會掃描參數str字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字符串結束時('\0')才結束轉換,並將結果返回。參數str 字符串可包含正負號、小數點或E(e)來表示指數部分,如123. 456 或123e-2。
【返回值】返回轉換后的浮點數;如果字符串 str 不能被轉換為 double,那么返回 0.0。
溫馨提示:ANSI C 規范定義了 stof()、 atoi()、 atol()、 strtod()、 strtol()、 strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習;使用 atof() 與使用 strtod(str, NULL) 結果相同。另外在 C99 / C++11 規范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
范例:
a = -100.23
b = 2.00
c = 341.00
d = 100.34
e = 0.00
函數 atof() 用於將字符串轉換為雙精度浮點數(double),其原型為:
double atof (const char* str);
atof() 的名字來源於 ascii to floating point numbers 的縮寫,它會掃描參數str字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字符串結束時('\0')才結束轉換,並將結果返回。參數str 字符串可包含正負號、小數點或E(e)來表示指數部分,如123. 456 或123e-2。
【返回值】返回轉換后的浮點數;如果字符串 str 不能被轉換為 double,那么返回 0.0。
溫馨提示:ANSI C 規范定義了 stof()、 atoi()、 atol()、 strtod()、 strtol()、 strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習;使用 atof() 與使用 strtod(str, NULL) 結果相同。另外在 C99 / C++11 規范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
范例:
#include <stdio.h> #include <stdlib.h> int main(){ char *a = "-100.23", *b = "200e-2", *c = "341", *d = "100.34cyuyan", *e = "cyuyan"; printf("a = %.2f\n", atof(a)); printf("b = %.2f\n", atof(b)); printf("c = %.2f\n", atof(c)); printf("d = %.2f\n", atof(d)); printf("e = %.2f\n", atof(e)); system("pause"); return 0; }執行結果:
a = -100.23
b = 2.00
c = 341.00
d = 100.34
e = 0.00