中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

PLC论坛

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 PLC论坛 → 浏览主题: 请教个基础问题,REAL类型的数值,做乘除运算为啥误差这么大?
发表新帖 回复该主题
回帖:2个,阅读:190 [上一页] [1] [下一页]
* 帖子主题:

请教个基础问题,REAL类型的数值,做乘除运算为啥误差这么大?

分享到
3012
q616602675
文章数:355
年度积分:164
历史总积分:3012
注册时间:2018/2/2
发站内信
发表于:2023/3/28 23:34:23
#0楼
附件 f5cb08db315e41cafe72ba22b12f9b6.jpg



如图,原来一直也没注意过,今天仿真时候拿手机算了一下,误差还真不小
是数据类型的问题吗?我查到的资料是Real类型要比Float类型精度更高呀
36501
cvlsam 版主
文章数:12298
年度积分:853
历史总积分:36501
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2023/3/29 5:14:10
#1楼
因为IEEE浮点存在有效位。
18661
pqsh 版主
文章数:7343
年度积分:491
历史总积分:18661
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2023/3/29 9:18:39
#2楼
第一,你这个PLC的浮点计算有问题.并不是所有的PLC都带浮点运算器,老式的计算机,CPU和浮点CPU都是分立的.就是现在,也算是分立的,只不过现在用在图像处理叫GPU,也是比CPU具有更强的浮点能力.
第二,对于过小的数,采用它的倒数计算比较好.比如你这个除以0.003想法采用乘以3333333.这是数值计算的常识.无论你是常数还是通过计算来的数,都要想法让它至少在小数点前有有效位, 这其中还包括改变乘除顺序(比如3/1000*25,不如25*3/1000). 对于加减(累积),会产生截断误差.
第三,如上,浮点有精度,一般的real是指float,32位表达,6位精度.如果需要更精确,采用双精度(64位),也许你的real(比如现在的C)是双精度,但此处不是. 在有些累积的计算上, 往往还不采用浮点(实数), 而采用整数.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002