51单片机设计计算器 乘法函数 算法问题
来自: 更新日期:早些时候
51单片机编程计算器问题~
比如1.1×1.1,看做是11×11=121,然后根据被乘数和乘数小树的位数之和(2)来确定小数点的位置:那就是两位小数,所以就变成1.21,计算完成。
51单片机设计计算器 乘法函数 算法问题视频
相关评论:
调试 跟踪看看.
一种方法,所有数据均按正整数计算,正负号单独处理,如两个数相减,先判断是被减数大,还是减数大,如果减数大,则将减数和被减数对调後相减,结果前面加负号,乘除法,则异号相乘除,结果为负
另一种方法,直接利用C语言的库函数,数据类型按浮点型进行计算,结果是有正负和小数的,然後将其转化为字符串进行显示即可
比如1.1×1.1,看做是11×11=121,然后根据被乘数和乘数小树的位数之和(2)来确定小数点的位置:那就是两位小数,所以就变成1.21,计算完成。
这个方法我知道,但这样计算极端情况下 (8+5)=13位数乘以13位数得到一个27位数,这样在显示取位放入数组时将相当繁琐(不是指代码繁琐) 计算时间太长,不到最后我还是不打算用这种方法。。
那就只能考虑直接用C语言的浮点来完成了。比如:
float a,b,c;
char str[20];
a=12.3
b=405.766;
c=a*b;
sprintf(str,"%f",c);
这样字符串str中就是c的数值的字符串。
51单片机设计计算器 乘法函数 算法问题视频
相关评论: