微控制器浮點數轉字串可以使用 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...