硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2691|回复: 8
收起左侧

stm32f767 的mdk工程 关于浮点数莫名奇妙的问题。

[复制链接]

56

主题

907

回帖

1075

积分

至尊会员

积分
1075
发表于 2017-10-19 22:06:58 | 显示全部楼层 |阅读模式
设置为double precision。


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

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

使用道具 举报

56

主题

907

回帖

1075

积分

至尊会员

积分
1075
 楼主| 发表于 2017-10-19 22:14:50 | 显示全部楼层
实验了下 用float是正确的  用double就不行。。。 莫名其妙。

之前实验exp() 老是得不到正确的结果。。。  莫名其妙
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2017-10-20 02:12:30 | 显示全部楼层
回头,我搞F7和H7了,我溜溜看,现在只能等其他懂的网友给你看看了。
回复

使用道具 举报

56

主题

907

回帖

1075

积分

至尊会员

积分
1075
 楼主| 发表于 2017-10-20 10:18:16 | 显示全部楼层
你手上f4的溜一个exp的值对不? 用软件仿真。。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2017-10-20 13:16:16 | 显示全部楼层
我验证为:100.1999984756
回复

使用道具 举报

56

主题

907

回帖

1075

积分

至尊会员

积分
1075
 楼主| 发表于 2017-10-21 23:25:09 | 显示全部楼层

回 liwangkm 的帖子

liwangkm:我验证为:100.1999984756 (2017-10-20 13:16) 
你是定义为float还是double。 float是对的,但是double不行。 而且无论float还是double exp()函数都是错的,因为exp()的参数就是double,一旦强制转换成double就不行了
回复

使用道具 举报

56

主题

907

回帖

1075

积分

至尊会员

积分
1075
 楼主| 发表于 2017-10-23 11:58:41 | 显示全部楼层
找到原因了。。。。 仿真不行,实操可以。。。看来是mdk的bug。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2017-10-24 01:25:25 | 显示全部楼层

回 roguebear 的帖子

roguebear:找到原因了。。。。 仿真不行,实操可以。。。看来是mdk的bug。 (2017-10-23 11:58) 
居然是这个原因,谢谢楼主告知[s:130]
回复

使用道具 举报

10

主题

54

回帖

84

积分

初级会员

积分
84
发表于 2017-11-29 15:16:33 | 显示全部楼层
我去原来还有这种事我也是用double仿真出问题
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-18 01:21 , Processed in 0.182859 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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