C51 浮點數轉字串函式

2021-10-06 16:36:30 字數 1459 閱讀 1731

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

一下是完整的基於keil c51 的c檔案:

//#include //#include //使用sprintf時取消該注釋

#define digital_to_char(x) ( (x)+'0' )

unsigned char dispbuff[5];

/* 多次方 */

static int int_pow(int value, unsigned int count)

/* 浮點數轉換為字串,包括整數轉換為字串

* intgr指定整數字個數,dec指定小數字個數

* 自動去除前面的0,小數點後面的0不會捨去

*/ static unsigned char float_to_string(double value, char* pdest, unsigned int intgr, unsigned int dec)

tvalue = (int)value%int_pow(10,intgr);

while(intgr)

zeroflag = 1;

*pstr = c;

tvalue = tvalue%int_pow(10,intgr-1);

--intgr;

++pstr; }

if( !zeroflag ) *pstr++ = '0';

/* 如果小數字數為0,則返回整數部分 */

if(0==dec)

*pstr++ = '.';

tm = (unsigned int)int_pow(10,dec);

tvalue = (unsigned int)( ( (unsigned int)((value-(unsigned int)value)*tm) )%tm );

while(dec)

*pstr = '\0';

return 1;

} void main()

編譯結果:

**結果:

而使用sprintf的程式,

#include unsigned char dispbuff[5];

void main()

編譯結果:

C51浮點數顯示 浮點數表示方法

c51中的浮點數儲存方式 n年前曾在c51bbs論壇中發布過 float 浮點形,它是符合ieee 754標準的單精度浮點形資料,在十進位制中具有7位有效數字。float型據占用四個位元組 32位二進位制數 在記憶體中的存放格式如下 位元組位址 由低到高 0 1 2 3 浮點數內容 mmmmmmmm...

整數(浮點數)轉字串

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

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

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