单片机 c语言 浮点计算器,c语言计算器单片机浮点型精度平凡而又高深!c语言浮点型数据精度问? 爱问知识人...

#include

#include

char publicbuff[20];

double atof(const char* s)//字符串转换成浮点型数据

{

register const char

#include

#include

char publicbuff[20];

double atof(const char* s)//字符串转换成浮点型数据

{

register const char* p=s;

register long double value=0.L;

int sign=0;

long double factor;

if(*p =='-'||*p==' ')//把符号赋给字符sign,指针后移

{

sign = *p ;

}

//处理数字字符

while ( (unsigned int)(*p - '0') =buff)

*str = *p--;

*str=' ';

}

char *float2String(float num) //浮点型数据转换成字符串

{

char *p;

long int A;

long int B;

long int c;

c=1000000;

if(num>0)

{

A = 1*num;

}

else

{

A = -1*num;

}

memset(publicbuff,' ',20);

p=publicbuff;

if(num0)

{

B=(num-A)*10000000;

}

else

{

B=(-1*num-A)*10000000;

}

//printf("%ld

",B);

if(B>0)

{

*p ='.';

while(B

{

*p='0';

p ;

c=c/10;

}

if(B==0)

{

B=B/10;

}

Int2Str(B,p);

}

return publicbuff;

}

void main()

{

long double num;

char str[20];

gets(str);

num=atof(str);

float2String(num);

puts(publicbuff);

getchar();

/*********************************************************

申明下我要做的是一个单片机上的计算器程序

不要问为什么要这么麻烦的将数据转来转去

因为那个环境没有这些库函数,所以必须这要做

但是我写完后精度有问题

按照理论,long double可以处理16位小数

但是这个你多测试几组数据就会发现精度有问题

比如输入0.1234567,OK没问题

但是输入其它小数会出现精度丢失情况

请大家测试代码,认真思考后给个建议

也可以说说你们做计算器的思路

**********************************************************/

}

展开

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值