浮点数状态相等,但比较等于时却条件不成立问题解决-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 676|回复: 0

浮点数状态相等,但比较等于时却条件不成立问题解决

[复制链接]
  • TA的每日心情
    开心
    2017-11-20 22:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2024-11-5 21:59:23 | 显示全部楼层 |阅读模式
    虽然浮点数在状态上相等,但为什么在“比较实数是否相等”运算中却检测到存在差异?
    对于“比较实数是否相等”的比较运算,由过程运算提供的实数类型的数值非常不精确。由于实数存在修正的误差,故不推荐使用此数据格式进行“相等”比较。
    浮点数 (或实数) 由一个 32 位的单精度数表示,而访问时使用双字格式。在 合信200PLC 中,实数精确到 6 个小数位。
    当使用包括较大数和很小数的一系列数值来计算实数时,可能会出现不精确的结果。当在状态表中查看实数时,相同的实数可能有不同的二进制表示。
    计算示例如下图:监控状态都是0.7但是比较指令并未导通。
    224505ymxzwlflydl7ycxc.jpg
    在状态表中监控VD100和VD104  二进制并不相同
    224505lnypjmnmp8mmp9em.jpg

    因此我们推荐不要使用“LDR=”函数,而是使用“LDR<=”和“LDR>=”这两个函数来进行比较运算。这为你提供一个数值比较的比较框架。

    230251vj5fvzsdegds2gfs.jpg
    子程序代码附上
    230421p2m1aemopik8epie.jpg
    最后还有一种浮点数等于比较的方法就是先放大倍数再使用整数进行比较就不会出现程序中的这种虽然数值看上去相等,却导致后面不输出的情况。


    +10
    不赞一个?
    打赏鼓励一下!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2026-11-9 03:46 , Processed in 0.143453 second(s), 50 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

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