當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 strtod用法及代碼示例


C語言stdlib頭文件(stdlib.h)中strtod函數的用法及代碼示例。

用法:

double strtod (const char* str, char** endptr);
將字符串轉換為雙精度
解析C-stringstr將其內容解釋為浮點數(根據當前語言環境),並將其值返回為double。如果endptr不是一個空指針,該函數還會設置endptr指向數字後的第一個字符。

該函數首先丟棄盡可能多的空格字符(如isspace),直到找到第一個非空白字符為止。然後,從該字符開始,采用與浮點字麵量類似的語法(請參見下文),盡可能多地使用有效的字符,並將其解釋為數值。指向最後一個有效字符之後的字符串其餘部分的指針存儲在由指向的對象中endptr

有效的浮點數strtod使用"C"語言環境由可選的符號字符(+或者-),然後是數字序列,可以選擇包含小數點字符(.),然後可選的是 index 部分(e或者E字符,後跟一個可選的符號和一個數字序列)。
有效的浮點數strtod使用"C"語言環境由可選的符號字符(+或者-),然後輸入以下內容之一:
-一個數字序列,可以選擇包含小數點字符(.),然後可選的是 index 部分(e或者E字符,後跟一個可選的符號和一個數字序列)。
- 一種0x或者0X前綴,然後是十六進製數字序列(如isxdigit)(可選)包含一個將整數部分和小數部分分開的句點。可選地,其後為2的冪(ap或者P字符,後跟一個可選的符號和一個十六進製數字序列)。
--INF或者INFINITY(忽略大小寫)。
--NAN或者NAN順序(忽略大小寫),其中順序是一個字符序列,其中每個字符都是字母數字字符(如isalnum)或下劃線字符(_)。

如果第一個非空格字符序列str不能形成如上所述的有效浮點數,或者不存在這樣的序列,因為str為空或僅包含空格字符,不執行任何轉換,並且該函數返回零值。

參數

str
C-string以浮點數表示開頭。
endptr
引用一個已經分配的類型的對象char*,其值由函數設置為中的下一個字符str數值之後。
此參數也可以是空指針,在這種情況下不使用它。

返回值

成功後,函數將轉換後的浮點數作為類型的值返回double
如果無法執行有效的轉換,則該函數返回零(0.0)。
如果正確的值超出該類型可表示的值的範圍,則為正或負HUGE_VAL返回,並且errno被設定為ERANGE

示例

/* strtod example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* strtod */

int main ()
{
  char szOrbits[] = "365.24 29.53";
  char* pEnd;
  double d1, d2;
  d1 = strtod (szOrbits, &pEnd);
  d2 = strtod (pEnd, NULL);
  printf ("The moon completes %.2f orbits per Earth year.\n", d1/d2);
  return 0;
}


輸出:

The moon completes 12.37 orbits per Earth year.



相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C strtod function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。