在嵌入式系统设计中如何将浮点数转换为字符串

在嵌入式系统设计中不可避免地要使用浮点数进行数据采集、运算、处理显示以及传输。但是由于浮点数数据的特殊性,其在显示或传输的处理上没有整数及字符串方便。一般来说浮点数格式的数据除了用于数学运算以及存储以外,在别的用途上一般要进行格式转换,最常见的方式是转换为整数及小数点位置信息以及将其转换为字符串。下面是我在实际工程中运用C语言处理浮点数的显示及传输的程序源代码,其功能是将-999.0~9999.0的浮点数转换为字符串及小数点位置(住在转换后的字符串中不含有'.'字符),这样转换的目的是便于数码管显示,当然如用液晶显示则要在转换后的字符串中保留'.'符号。在程序中没有用到C语言的库函数。因为库函数太占用存储资源了。

  void display_double(double f )
{double t1,t2;
 unsigned char i=0,k=0,m=0,n=0;
 unsigned char a[5];
 unsigned char flag=0;
 if(f<0.00001)
  {flag=1;f=-f;a[m++]='-';}
 t1=f;t2=f;
 while(t1>1)
  {t1=t1/10;
   i++;}//i代表从最高位起到最低位的小数点位置号。

 if(i==0)i=1;
 if(flag)i++;
 t2=f;
 for(n=0;n<4;n++)
  { if(m>3)break;
    if(t2>1000.0)
     { t2=t2/1000.0;
   a[m++]=(int)t2+'0';
    t2=t2-(int)(t2);}
    if(t2>100.0)      
     { t2=t2/100.0;
   a[m++]=(int)t2+'0';
    t2=t2-(int)(t2);
   }
    if(t2>10.0)
     {
      t2=t2/10.0;
   a[m++]=(int)t2+'0';
    t2=t2-(int)(t2);
   }
    if(t2>1.0)
    
       {
        a[m++]=(int)(t2)+'0';//取t2的整数
        t2=t2-(int)(t2);
        } 
     if(t2<1.0)
    while(t2<1.0)
     {if(m>3)break;
   if(m==0&&flag==0 || m==1&&flag)a[m++]='0';
      t2=t2*10.0;
      a[ m++]=(int)(t2)+'0';
       t2=t2-(int)(t2);

      } 
    }
  a[4]='/0';

 displayStr(a,i);

 return;
}

其中 displayStr()是现实一个具有四个字符串的现实功能的现实函数,a是转换后字符数组,i是小数点的位置。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值