[STM32F1] STM32F1对于浮点数的处理

[复制链接]
 楼主| huhaomcu 发表于 2015-5-23 21:49 | 显示全部楼层 |阅读模式
我在程序内有如下计算,希望得到的是浮点数结果;
float vol;
vol = (float)(((mta & 0xffff0000)>>16) * 33 *100 /40960);
可我通过KEIL的WATCH查看变量vol为什么得出来的结果仍然是整型数据咧???

amanda_s 发表于 2015-5-25 13:22 | 显示全部楼层
光在前面加(float)没有用,因为里面计算的时候已经转成整型了。
计算式里的数值也要用float类型的值
bear1 发表于 2015-5-25 14:56 来自手机 | 显示全部楼层
amanda_s 发表于 2015-5-25 13:22
光在前面加(float)没有用,因为里面计算的时候已经转成整型了。
计算式里的数值也要用float类型的值 ...

什么意思?没搞懂
sjw1716094642 发表于 2015-5-25 15:11 | 显示全部楼层
vol = (float)(((mta & 0xffff0000)>>16) * 33 *100 /40960.0);
周董 发表于 2015-5-25 20:42 | 显示全部楼层
sjw1716094642 发表于 2015-5-25 15:11
vol = (float)(((mta & 0xffff0000)>>16) * 33 *100 /40960.0);

这个说的是啥意思呀,可以解释下吗??
sjw1716094642 发表于 2015-5-26 09:59 | 显示全部楼层
周董 发表于 2015-5-25 20:42
这个说的是啥意思呀,可以解释下吗??

书上这么说的
amanda_s 发表于 2015-5-27 13:52 | 显示全部楼层
bear1 发表于 2015-5-25 14:56
什么意思?没搞懂

比如(float)13/5,和13.0/5.0
试一下计算结果,就知道了。
前者虽然你加了float,但在计算13/5的时候就已经将小数点后面的数四舍五入了。
desomond 发表于 2015-5-27 19:09 | 显示全部楼层
这个计算的过程全部是以整形数计算的,其中如果有除不尽的情况,或者出现小数的时候都会变成整数,最后将结果强制转换为float型,其实没有任何意义了,至于 为什么会从调试窗口看到的是整形,你可以让它以浮点显示就好了
戈卫东 发表于 2015-5-27 20:12 | 显示全部楼层
第一项转换一下,后面就没有问题了
float vol;
vol = (mta & 0xffff0000)>>16;
vol = vol * 33 *100 /40960;
jcx0324 发表于 2015-5-29 16:56 | 显示全部楼层
单精度5.0f这样写会比较好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

508

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部