atof、 _atof_l、 _wtof、 _wtof_l
將字串轉換為雙。
double atof(
const char *str
);
double _atof_l(
const char *str,
_locale_t locale
);
double _wtof(
const wchar_t *str
);
double _wtof_l(
const wchar_t *str,
_locale_t locale
);
參數
str
以指定須轉換的字串。locale
若要使用的地區設定。
傳回值
每個函式會傳回double值所產生的解譯為數字的輸入的字元。 如果輸入無法轉換成該型別的值,則傳回值為 0.0。
在所有範圍外的情況下,errno 設為ERANGE。 如果傳入的參數是NULL,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,這些函式會設定errno到EINVAL ,並傳回 0。
備註
這些函式轉換為雙精度浮點數的值為字元字串。
輸入的字串是可解譯為指定之型別的數值的字元序列。 函式會停止讀取輸入無法辨識的數字的組件的第一個字元字串。 這個字元可能會Null 字元('\ 0' 或 '\ 0' L) 結束的字串。
str引數atof和**_wtof**的表單如下:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E }[sign]digits]
A whitespace包含空格或 tab 字元,會被忽略 ; sign可能是加號 (+) 或減號 (-) ; 與digits是一或多個十進位數字。 如果沒有數字會出現在十進位之前,至少一個必須出現在十進位之後。 十進位數字後面可能跟簡介的字母所組成的指數 (d, D, e,或E) 和一個選擇性帶正負號十進位整數。
使用這些函式的版本_l尾碼完全相同,不同之處在於它們會使用傳入而非目前的地區設定的地區設定參數。
泛用文字常式對應
TCHAR。H常式 |
_UNICODE & 未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tstof |
atof |
atof |
_wtof |
_ttof |
atof |
atof |
_wtof |
需求
Routine(s) |
所需的標題 |
---|---|
atof |
<math.h> 和 <stdlib.h> |
_atof_l |
<math.h> 和 <stdlib.h> |
_wtof, _wtof_l |
<stdlib.h> 或者 <wchar.h> |
範例
此程式會示範如何轉換儲存為字串的數字,值必須為數字使用atof函式。
// crt_atof.c
//
// This program shows how numbers stored as
// strings can be converted to numeric
// values using the atof function.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *str = NULL;
double value = 0;
// An example of the atof function
// using leading and training spaces.
str = " 3336402735171707160320 ";
value = atof( str );
printf( "Function: atof( \"%s\" ) = %e\n", str, value );
// Another example of the atof function
// using the 'd' exponential formatting keyword.
str = "3.1412764583d210";
value = atof( str );
printf( "Function: atof( \"%s\" ) = %e\n", str, value );
// An example of the atof function
// using the 'e' exponential formatting keyword.
str = " -2309.12E-15";
value = atof( str );
printf( "Function: atof( \"%s\" ) = %e\n", str, value );
}