永发信息网

C51单片机浮点数运算

答案:3  悬赏:40  手机版
解决时间 2021-02-18 15:51
C51单片机浮点数运算
最佳答案
因为没有电路,所以程序我就没法给你写,给你个思路.
第一,不知道你的a和b是什么类型的,如果是定义成浮点型,那么,可以这样写:
float f_Div = a/b;
如果两个有一个是整形的,那么,把整型强制转换成浮点型:
float f_Div = (float)a/(float)b;
注意,那个f_Div变量必须是float型,才能有小数产生

第二,你要进行显示,肯定要把各个位都取出来,这里面肯定有一个取模运算,就是"%",
对于浮点型,不运行取模运算的,所以,你必须把浮点型转换成整型,但是,不能强制转换,
比如: unsigned int I_Div = (unsigned int)f_Div;这是不可以的,你的小数部分就没有了.
所以,你必须要放大一定的倍数,根据你的要求,你是要保留三位,那么,这里还有个问题,你的
小数点之前有几位,决定了你小数点后面保留几位.
比如,你得到的结果是 1.2345,那么,你就保留1.23
如果你得到的结果是 12.345,那么,就保留12.3
如果你得到的结果是 123.45,你就只能保留123了
如果得到的结果是 0.123,你就只能保留 0.12

所以可以看出,你的浮点型结果整数部分有多少位,决定了你的小数能保留多少位,所以还要进行如下运算:

unsigned int i_Div = unsigned int)f_Div;;
unsigned char Dot_Bit = 0; //---这个变量用来表示在第几位上显示小数点,因为
//---通过下面的操作,已经把小数变成整数了
if(I_Div >= 100) //---表示前面有3个整数部分位
{
; //---那就没什么可操作的,unsigned int i_Div = unsigned int)f_Div;;就符合要求
}
else if (I_DIV >= 10) //---表示整数部分有2位
{
I_DIV = f_Div *10;
Dot_Bit = 1; //---在右数第2个地方显示小数点,也就是十位后显示小数点
}
else
{
I_DIV = f_Div *10;
Dot_Bit = 2; //---在右数第2个地方显示小数点,也就是最前面那位后面显示
}
void Display(void)
{

unsigned char Hundred = I_Div/100;
unsigned char TenBit = (I_Div/%00)/10;
unsigned char TenBit = I_Div%10;
....... //然后就开始显示了

}
全部回答
浮点数本身就存在精度问题的
C51的float浮点类型只有七个重要的数字,在符合标准
IEEE-754浮点运算相比,整数运算是非常昂贵的CPU BR />长也并不适合大量的字符的计算方法,但很多的麻烦
程序就没有了
比如算10/3 = 3.333
直接算肯定没小数的
这样就可以了
10*1000/3 = 3333 你吧每一位都取出来 3 3 3 3
然后你再显示的时候就显示3 . 3 3 3 就可以了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
60天小金毛一些养育问题?
【小学三年级数学上册教学计划】小学三年级数
南京到常州的火车最晚一班是几点,票价是多少
超级大英雄电视剧结局是怎么回事
西圪堵这个地址在什么地方,我要处理点事
设函数f(x)=x²+(2a-1)x+4,若x1<x2,x1+
DS-7932N-E4只能预览16路,另外16路怎么看?
买爱马仕a货好还是买house of hello好
秀水名苑东门地址有知道的么?有点事想过去
高中必修一数学 设M={x|x≤√10},a=√2+√3,
李靖遇仙何解
河北省清河县2016年葛仙庄村有卖小狗的地方吗
根据企业所得税法的规定,下列税金在计算企业
自驾游去西藏,对车有什么要求?有什么需要注
属于信息道德范畴的是
推荐资讯
我不这么认为{翻译英文}
中国女足有哪些人
乐圣音乐主题酒吧这个地址在什么地方,我要处
明末思想家李贽是一个“离经叛道”的“异端”
4个25相加的和里有多少个5
M衣社地址有知道的么?有点事想过去
儿子今年8岁每天打电话都会说儿子妈妈爱你,这
鲍头鱼怎么做好吃
如何做凉拌腐竹
DNF公爵尤里斯怎么打 DNF公爵怎么打
昂克赛拉好开还是丰田86好开
旺仔米线我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?