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


C語言 strtof用法及代碼示例


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

用法:

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

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

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

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

參數

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

返回值

成功後,函數將轉換後的浮點數作為類型的值返回float
如果無法執行有效的轉換,則該函數返回零(0.0F)。
如果正確的值超出該類型可表示的值的範圍,則為正或負HUGE_VALF返回,並且errno被設定為ERANGE
如果正確的值將導致下溢,則該函數將返回一個其大小不大於最小歸一化正數的值(某些庫實現也可能設置為errnoERANGE在這種情況下)。

示例

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

int main ()
{
  char szOrbits[] = "686.97 365.24";
  char* pEnd;
  float f1, f2;
  f1 = strtof (szOrbits, &pEnd);
  f2 = strtof (pEnd, NULL);
  printf ("One martian year takes %.2f Earth years.\n", f1/f2);
  return 0;
}


輸出:
One martian year takes 1.88 Earth years.



相關用法


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