atof() — Convert Character String to Float
IBM說明
The atof() function converts a character string to a
double-precision floating-point value.
我的理解:
將字串轉成倍精度浮點數值型態,只要字串是有意義可被解讀的(一般的小數點表示與科學記號表示),並符合圖片的格式皆可轉換。
下列會以正的浮點數,負的浮點數,科學記號表示分別呈現,使用float型態儲存轉換結果
(字串接受格式)
程式碼
#include <stdlib.h> #include <stdio.h> int main(void) { char *strnumber = " 123.345"; float number_out; number_out = atof(strnumber); printf("Ex1.number_in:\"%s\"\t,number_out:%f\n", strnumber, number_out); strnumber = " 12.345E-5"; number_out = atof(strnumber); printf("Ex2.number_in:\"%s\"\t,number_out:%e\n", strnumber, number_out); strnumber = "-123.345"; number_out = atof(strnumber); printf("Ex3.number_in:\"%s\"\t,number_out:%f\n", strnumber, number_out); strnumber = "-12.345E-5"; number_out = atof(strnumber); printf("Ex4.number_in:\"%s\"\t,number_out:%e\n", strnumber, number_out); }
執行結果
根據輸出結果,我們可以觀察到
Ex1. 字串123.345經過轉換再印出來的結果為123.345.001
Ex2. 字串12.345E-5經過轉換再印出來的結果為1.2345e-004
Ex3. 字串-123.345經過轉換再印出來的結果為123.345.001
Ex4. 字串-12.345E-5經過轉換再印出來的結果為-1.234500e-004
那為甚麼有些後面會冒出一個1呢?原因是浮點數的表示方式與整數不一樣,才會有此現象
參考資料
https://www.ibm.com/docs/en/i/7.4?topic=functions-atof-convert-character-string-float#itof
沒有留言:
發佈留言