頭文件:#include <stdlib.h>
函數 strtod() 用來將字符串轉換成雙精度浮點數(double),其原型爲:
double strtod (const char* str, char** endptr);
【參數說明】str 爲要轉換的字符串,endstr 爲第一個不能轉換的字符的指針。
【函數說明】strtod() 函數會掃描參數str字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace()函數來檢測),直到遇上數字或正負符號纔開始做轉換,到出現非數字或字符串結束時('\0')才結束轉換,並將結果返回。參數 str 字符串可包含正負號、小數點或E(e)來表示指數部分。如123. 456 或123e-2。
若endptr 不爲NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 爲 NULL,則表示該參數無效,或不使用該參數。
【返回值】返回轉換後的浮點型數;若不能轉換或字符串爲空,則返回 0.0。
溫馨提示:ANSI C 規範定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換爲數字的函數,大家可以對比學習;使用 strtod(str, NULL) 與使用 atof() 結果相同。另外在 C99 / C++11 規範中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
【示例】計算月球每年繞地球運行多少圈。
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- char szOrbits[] = "365.24 29.53";
- char* pEnd;
- double d1, d2;
- d1 = strtod (szOrbits, &pEnd);
- d2 = strtod (pEnd, NULL);
- printf ("月球每年繞地球運行 %.2f 周。\n", d1/d2);
- system("pause");
- return 0;
- }
月球每年繞地球運行 12.37 周。