有关STM32浮点数运算的问题

2019-08-12 18:02发布

我在keil C编写这样的测试程序
float a;
u8 b;
a=10.08;
b=(int)a;
a=a-b;

理论上a=0.08,在调试中变量查看为0,我把这个a值扩大100倍,用开发板液晶显示出来为7。
为什么调试中变量查看不了小数点后的数?
还有,为什么液晶显示出7来,我怀疑a=a-b,浮点减整形后的值不对。网上查了查,ARM不支持浮点数运算

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
yuzeyuan1
1楼-- · 2019-08-13 12:26
LTY 发表于 2017-1-9 11:13
我也遇到过这样的问题,你现在找到原因了?

浮点运算可以,但是不能整形和浮点混在一起算,float型运算会保留7位有效数字,double会保留15位有效数字。其它位数全是错的。
roguebear2012
2楼-- · 2019-08-13 15:58
  //#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  //#endif  这个也设置了。

我快被浮点搞疯了    exp(2.0) 这个怎么也不对。   最简单的 0.1 + 100.1 如果是double precison,结果也不对。非要float才行。
但是mdk已经设置了double precison

一周热门 更多>