硬汉嵌入式论坛

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

keil中浮点型计算问题

[复制链接]

20

主题

72

回帖

132

积分

初级会员

积分
132
发表于 2021-8-27 09:42:01 | 显示全部楼层 |阅读模式
        float  a=6000000;
        a=a-0.2;
        a=a/10;

实际运行的结果总是不对,尝试了float换double,先扩大10倍再做减法等方法,都没能得到理想值,网上也没有找到适合的解决办法,特来求助

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2021-8-27 09:57:00 | 显示全部楼层
QQ截图20210827095649.png
回复

使用道具 举报

20

主题

72

回帖

132

积分

初级会员

积分
132
 楼主| 发表于 2021-8-27 10:04:56 | 显示全部楼层
我的是这样的

回复

使用道具 举报

20

主题

72

回帖

132

积分

初级会员

积分
132
 楼主| 发表于 2021-8-27 10:15:42 | 显示全部楼层
呃,现在换成double好像可以了,应该是float精度不够导致的
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2021-9-7 16:51:07 | 显示全部楼层
硬汉兄,这个 float  a=6000000 在MDK中  一个浮点变量与一个带小数的浮点常数   是否需要在  常数后加 f     如:1.23f   很疑惑 是不是不同的开发环境,不同的编译器  这个小f 不同
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2021-9-8 08:36:55 | 显示全部楼层
dghwjh 发表于 2021-9-7 16:51
硬汉兄,这个 float  a=6000000 在MDK中  一个浮点变量与一个带小数的浮点常数   是否需要在  常数后加 f   ...

对于不支持硬件浮点和支持硬件单精度浮点的芯片,我使用IDE定义的float型都会加上f,保证全称是单精度计算。

不加的时候,很容易出现双精度运算,导致执行时间较长。
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2021-9-8 17:18:55 | 显示全部楼层
  浮点运算 MDK 这个设置有关吗? 如果我默认设置成双精度    两个变量为float做运算为 单精度     如果一个float 乘以一个不带f的浮点数   是不是结果 肯定是双精度
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2021-9-9 08:54:20 | 显示全部楼层
dghwjh 发表于 2021-9-8 17:18
浮点运算 MDK 这个设置有关吗? 如果我默认设置成双精度    两个变量为float做运算为 单精度     如果一 ...

对,理论上是的,以H7的硬件双精度为例,也会有这种问题。单精度计算还是要比双精度快些。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 16:57 , Processed in 0.252242 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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