字串轉浮點數atof函式的實現

2021-10-05 14:22:37 字數 979 閱讀 3867

#include

/*字元是否在某個區間範圍內*/

#define in_range(c, lo, up) ((unsigned char)c >= lo && (unsigned char)c <= up)

/*十進位制內字元*/

#define isdigit(c) in_range(c, '0', '9')

/*十六進製制內字元*/

#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'a', 'f'))

/*是否是空格*/

#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v')

/*字元轉浮點數*/

double

atof

(const

char s)

if(s[i]

=='.'

)for

(power =

1.0;

isdigit

(s[i]);

++i)

return sign * val / power;

}/*測試函式*/

intmain

(int argc,

char

* ar**)

double ret =

atof

(ar**[1]

);printf

("浮點數為%f\n"

, ret)

;return0;

}

測試結果

lmz@lmz-x280:~$ ./test 123.645

浮點數為123.645000

整數(浮點數)轉字串

在實際專案中,我們不可避免的遇到需要將整數 浮點數 轉換為字串輸出 儲存為檔案或者顯示列印 這是乙個很常見的演算法,標準c庫甚至提供了諸如itoa,ltoa,之類的函式供大家呼叫。但是,在一些特殊場合,比如對功耗要求比較苛刻的場合,則對轉換速度提出了要求。在微控制器應用中,很多mcu沒有除法器,和除...

C51 浮點數轉字串函式

微控制器浮點數轉字串可以使用 stdio.h 中sprintf函式,但 體積和ram占用空間比較大。自己寫的程式又不太好。在學習gps資料解析過程中用到了leiouyang的gps解析庫,在其中有浮點數轉字串函式,現推薦給大家。一下是完整的基於keil c51 的c檔案 include includ...

C語言浮點數轉字串實現函式

c語言浮點數轉字串可用庫函式sprintf,此處為編寫的簡單函式。小數部分最多顯示六位。pout 輸出字串緩衝區 f 浮點數值 isize 輸出字串緩衝區大小 char funftoa char pout,float f,unsigned char isize itmpnum f f f itmpn...