C 程式設計/stdlib.h/strtod
外觀
strtod (string to double) 將一個字元字串轉換為雙精度浮點數[1]。它定義如下:
double strtod ( const char * str, char ** endptr );
strtod 函式解析 C 字串 str,將其內容解釋為浮點數,並將它的值作為雙精度浮點數返回。如果 endptr 不是空指標,該函式還會將 endptr 指向的值設定為指向數字後的第一個字元。
該函式首先丟棄儘可能多的空格字元,直到找到第一個非空格字元。然後,從該字元開始,儘可能多地獲取符合浮點字面量語法格式的字元,並將它們解釋為數值。指向數字後剩餘字串的指標儲存在 endptr 指向的物件中。
strtod 的有效浮點數由以下部分組成:
- 可選的正負號
- 一個數字序列,可以選擇包含小數點字元
- 可選的指數部分,它本身由一個 'e' 或 'E' 字元後跟可選的符號和一個數字序列組成。
如果 str 中的第一個非空格字元序列不構成如上定義的有效浮點數,或者由於 str 為空或僅包含空格字元而沒有這樣的序列,則不執行轉換。
str
- 以浮點數表示開頭的 C 字串。
endptr
- 對一個已分配的 char* 型別物件的引用,該函式將該值設定為指向 str 中數字值後的下一個字元。此引數也可以是空指標,在這種情況下,它不會被使用。
成功時,該函式將轉換後的浮點數作為雙精度浮點數值返回。如果無法執行有效的轉換,則返回零值 (0.0)。如果正確的值超出可表示值的範圍,則返回正或負 HUGE_VAL,並且全域性變數 errno 設定為 ERANGE。如果正確的值會導致下溢,則返回零,並且 errno 設定為 ERANGE。
strtod 函式包含在 stdlib.h 中。
- ↑ ISO/IEC 9899:1999 規範 (PDF). p. 308, § 7.20.1.3.