浮点数转换为字符串

浮点数转换为字符串

ID:9094015

大小:20.72 KB

页数:4页

时间:2018-04-17

浮点数转换为字符串_第1页
浮点数转换为字符串_第2页
浮点数转换为字符串_第3页
浮点数转换为字符串_第4页
资源描述:

《浮点数转换为字符串》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、串口通讯中传递的数据格式不外两种:ASCII码(即可见字符形式)和二进制数据格式(对应Modbus协议中有ASCII模式和RTU模式)。最初的想法是把浮点数的各位分别提取出来,保存成一个各元素都是ASCII码的数组,然后通过串口发送出去,对方接收到这个数组后再相应地组合成原来的浮点数。这是以前写过的一段代码:  //################################################################  //函数名:voidFloat2Char(floatValue,char*array)  //描述:将浮

2、点数的各个位的数值转换成字符串,通过串口发送至上位机显示  //参数:floatValue为欲转换的正数浮点数值,转换结果保存在字符数组*array里  //################################################################    voidFloat2Char(floatValue,char*array)   {  Uint16IntegerPart;  floatDecimalPart;  Uint16i=0;  Uint16j=0;  chartemp;    //分离整数部分与小数

3、部分:  //整数部分保存在IntegerPart中  //小数部分保存在DecimalPart中  if(Value>=1)  {  IntegerPart=(Uint16)Value;  DecimalPart=Value-IntegerPart;  }  else   {  IntegerPart=0;  DecimalPart=Value-IntegerPart;  }      //转换整数部分  if(IntegerPart==0)  {  array[0]=0+48;  array[1]='.';  i=1;  }  else  { 

4、 while(IntegerPart>0)  {  array[i]=IntegerPart%10+48;  IntegerPart=IntegerPart/10;  i++;  }  i--;    //修正转换结果的顺序  for(j=0;j+1<=(i+1)/2;j++){  temp=array[j];  array[j]=array[i-j];  array[i-j]=temp;  }  i++;  array[i]='.';  }      //转换小数部分,此处设置最多转换到第四位小数  i++;  array[i++]=(Uint1

5、6)(DecimalPart*10)%10+48;  array[i++]=(Uint16)(DecimalPart*100)%10+48;  array[i++]=(Uint16)(DecimalPart*1000)%10+48;  //if(5==i)  array[i++]=(Uint16)(DecimalPart*10000)%10+48;    array[i]='';//结束符    }   //Endofline  这段代码没有考虑负数的转换,要转换带符号数只需加入符号判断后将正(负)号标志放在数组的第一位即可。这段函数用起来挺好

6、用,但是这种方法有很多不完善的地方,比如要预先设置字符数组*array的大小以足够存储转换后的各位,小数点位置不确定,给接收方还原数据带来了麻烦。    硬件存储浮点数,统一的标准是IEEE754标准,因此更好的方法是通过这个统一的标准来实现串口传送浮点数据的转换和还原。嵌入式硬件使用的float型数据即单精度32位浮点数格式,这在一般应用中已经足够。IEEE754规定了32位数据的格式,分别规定1位符号位、23位尾数位和8位指数位(不知有没有记错?)。比如浮点数34.9,IEEE754标准十六进制显示是0x420x0B0x990x9A,二进制显示

7、则是01000010000010111001100110011010。我最初的想法是根据这个标准规定的各部分位数,写出转换和还原的代码来;但这样确实太麻烦了。因此何妨直接借助编译器来实现这个转换??这样多方便啊  以下的代码我没有直接写,直接借用了这篇博客文章(http://blog.sina.com.cn/s/blog_4b94ff130100ejyb.html)里的程序:  /*******************************************  函数名称:Float2Byte  功能:浮点数转换成字节型数组  参数:入口参数

8、floatNum,欲转换的浮点数  返回值:byteArry,转换后的字节数组  ********************

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。