STC90C516RD+的浮点数怎么算的乱七八糟的(已解决)
本帖最后由 清雨影 于 2013-2-18 16:55 编辑最近写了个计算器,关于计算部分的代码在VC++下调试过的,都可以正常运行。
移植到了单片机上,不说别的,就算一个2+34算出来都是什么36.0423什么的。
我用的是double,不是说double在keil里面等同float处理吗?
还是我转换成字符的时候出问题了?
data_trans为一个float数组
smg=*data_trans>=0?'+':'-';
*data_trans=fabs(*data_trans);
smg=(uchar)(*data_trans)%10+0x30;
smg='.';
smg=(uchar)(*data_trans*10)%10+0x30;
smg=(uchar)(*data_trans*100)%10+0x30;
smg=(uchar)(*data_trans*1000)%10+0x30;
smg=(uchar)(*data_trans*10000)%10+0x30;
smg=(uchar)(*data_trans*100000)%10+0x30;
smg=(uchar)(*data_trans*1000000)%10+0x30;
smg='*';
smg='1';
smg='0';
smg='^';
smg=i>=0?'+':'-';
if(i<0){i=0-i;}
smg=i/10%10+0x30;
smg=i%10+0x30;
smg=0;
我到现在都睡不着啊!
-------------------------------------------------华丽的分割线————————————————————————
我知道float的问题了,转换为字符的时候,不能像我那样转换
先include标库stdio.h
unsigned char smg;
float float_data=0;
sprintf(smg,"%f",*float_data); keil C51不支持double,用了也会被编译器自动转成float处理
BXAK 发表于 2013-2-18 09:47 static/image/common/back.gif
keil C51不支持double,用了也会被编译器自动转成float处理
可是就算float他也算得和VC上的不一样啊! 唔出奇,keil我用pow也出問題,有冇師兄知道 mbass51 发表于 2013-2-18 15:43 static/image/common/back.gif
唔出奇,keil我用pow也出問題,有冇師兄知道
我知道float的问题了,转换为字符的时候,不能像我那样转换
先include标库stdio.h
unsigned char smg;
float float_data=0;
sprintf(smg,"%f",*float_data);
pow函数本身没有问题。
还有,求求你,不要用广东话发帖,否则我就用吴方言回帖。晓得伐?
http://www.amobbs.com/thread-5511687-1-1.html
能否看一看,是pow在keil c51 u2 u4 的test 关于F005内部狗的使用
页:
[1]