求教浮点数转字符串的问题

sdu509 2011-08-08 09:50:32
这是我写的关于浮点数(保留四位有效数字)转化为字符串的子程序程序,用在uPSD3334单片机上,使用Keil调试,当DataF

的位数比较多时比如-99999.1273,所得到的字符串str已经是随机的数了,当DataF取到-9999.1273多得到的字符串为

“-9999.1272”,能不能实现对我要求的浮点数的精确显示?至少能对-99999.1273正确显示,请各位高手支招;

#include "stdio.h"
#include "stdlib.h"
xdata unsigned char count_fts=0;//用在发送子程序中

xdata int b,c;

void sprintftos(double DataF,unsigned char str[])
{
int f=10000;//精度
unsigned char i;
double a;
unsigned char buf[20]={0};

if(DataF < 0)
{
a = 0 - DataF;
str[0]='-';
}
else
{
a = DataF;
str[0]='+';
}

b=a;
c=(a*f - b*f);

count_fts=sprintf(buf,"%d.%d",b,c);

for(i=1;i<count_fts+1;i++)
{
str[i]=buf[i-1];
}

count_fts=count_fts + 1; //待发送的浮点数的总位数,正/负号加小数点
}
...全文
68 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjtea 2011-08-08
  • 打赏
  • 举报
回复
在把负数转成正数之前,先把浮点数乘以10000,变成长整型。然后,再取符号,再逐位转变成字符

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧