求教浮点数转字符串的问题
这是我写的关于浮点数(保留四位有效数字)转化为字符串的子程序程序,用在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; //待发送的浮点数的总位数,正/负号加小数点
}