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
沒有留言:
發佈留言