OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3817|回复: 1

求助大家 stm32f7 的浮点运算

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-10-19
在线时间
0 小时
发表于 2017-10-19 22:54:24 | 显示全部楼层 |阅读模式
1金钱
mdk 设置了double precison
设置为double precision。

  //#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)        //这里开启了fpu
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  //#endif


    static double f1, f2, f3;   
      f1 = 0.1f;
      f2 = 100.1f;
      f3 = f1 + f2;    //按道理应该是100.2

f3  得不到正确的值。看watch窗口等于  0.099999999.。。。。   这么简单的算式,居然都不行。。。 试了好几个工程都这样。莫名其妙。。。




实验了下 用float是正确的  用double就不行。。。 莫名其妙。

然后实验exp() 老是得不到正确的结果。。。  莫名其妙


把arm_cortexm7lfdp_math.lib加入了工程。
result = exp(2) 的值应该是  0.693147  
这里如果result为double,那么得出来的是3.105036184601e+231。     
如果result为float, 得出0.


搞了一晚上,要发疯了。
求助各位。










正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-10-20 00:47:45 | 显示全部楼层
精度损失,很正常的问题。要深入了解,去看计算机表示浮点数的方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 22:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表