程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

数据类型引发的故障,整形赋值给浮点型

balukai 2025-01-06 11:15:35 文章精选 10 ℃


“王工,我的减法指令的计算结果怎么不正确,20减2.0怎么等于-2.0。”



当时正在赶车,根据他微信发的截图,从原理上分析存在两种可能性:

1、 变量多次赋值,在此处计算时的值为0.0,到后面又被赋值为20,监控显示的是最后赋值的结果;

2、 变量赋值类型错误,赋值为整形的20而不是浮点型20.0,整形的20按浮点数显示的话是0.0;

检查方法:

  • 如果是地址重复使用,多次赋值,对地址交叉参考一下就能发现。
  • 如果赋值的数据类型错误,需要检查传入数据的变量的类型

朋友针对这两种情况检查发现,是上位机WINCC赋值的时候,写入类型错误导致。

总结:

编程的时候尽量按照IEC的规范要求,定义正确的数据类型。如果程序按标准化和规范化编制,就不会出现类似的问题。在未执行IEC检查的时候,我们往往不太注意WORD类型和int类型的变量、整数直接和浮点数运算的程序,虽然大多数时候结果不会出错,但这就是在给后面挖坑,终有一天会把自己陷进去。

1、为什么REAL类型中写入十进制的0浮点数显示为0.0,而写入十进制的20浮点数也显示为0.0呢?

2、如何写不规范数据类型的程序,让别人无法用LAD查看[奸笑]

最近发表
标签列表