找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
对于“比较实数是否相等”的比较运算,由过程运算提供的实数类型的数值非常不精确。由于实数存在修正的误差,故不推荐使用此数据格式进行“相等”比较。
浮点数 (或实数) 由一个 32 位的单精度数表示,而访问时使用双字格式。在 S7-200 中,实数精确到 6 个小数位。
当使用包括较大数和很小数的一系列数值来计算实数时,可能会出现不精确的结果。当在状态表中查看实数时,相同的实数可能有不同的二进制表示。
因此我们推荐不要使用“LDR=”函数,而是使用“LDR<=”和“LDR>=”这两个函数来进行比较运算。这为你提供一个数值比较的比较框架。
参考:
虽然浮点数在状态上相等,但为什么在“比较实数是否相等”运算中却检测到存在差异?
https://support.industry.siemens.com/cs/cn/zh/view/17924241
如何比较两个实数的大小是否相等?
https://support.industry.siemens.com/cs/cn/zh/view/24000326
所以可以判断这个数比如大于0.39999然后小于0.40001,就认为是相等,当然这两个数根据你实际进行设置,
你程序里面显示值0.4,实际可能就不是正值的0.4,是0.395或是0.401四舍五入转过来的,实际程序是无法执行。
可以参考:
如何比较两个实数的大小是否相等?
https://support.industry.siemens.com/cs/cn/zh/view/24000326
虽然浮点数在状态上相等,但为什么在“比较实数是否相等”运算中却检测到存在差异?
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!