回复:计算Dint的问题

芳季

西门子1847工业学习平台

  • 帖子

    15861
  • 精华

    104
  • 被关注

    992

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2017-09-12 19:30:27

12楼

展开查看
以下是引用yanxiao在2017-09-12 19:08:50的发言 >11楼

(引用错误,删掉重写,说是重复发贴,所以加入这段文字)。

有点明白了。就是插值计算位置。

1、不要整个数值参与计算,只算增量就行了。也就是,第一个作为零点。计算出增量后,再加上第一点座标。

2、插值的两点间距离,不要超出16位表达范围,要不然两数相乘就溢出了。如果要超出16位,采取降低分辨率的办法。

以下是引用看雪001在2017-09-12 12:39:04的发言 >:哈哈,如果对一个程...

引用详细内容:

哈哈,如果对一个程序员说:你的代码有bug。

他的第一反应是:1,你的环境有问题吧;2,傻X你会用吗?

如果你委婉地说:你这个程序和预期的有点不一致,你看看是不是我的使用方法有问题。

他本能地会想:X,是不是出bug了!

……

“对于一个双字减法指令”—这一句又错了。

编程就是思维的表达(express),一个漏洞足以致命。

两次通讯之间那点时间伺服哪能转了16位去了。

那么我上面说到的那些什么数轴啊象限啊xy啊,用常规的这道两点式计算是否会出错?这方面我真的很弱。

时间戳和轴位置都有过零的时候,在这里附近的点计算,就怕出问题。

但是从两点式看

  X-X0    Y-Y0       X-X0

  ----- = ----- => Y=-----(Y1-Y0)+Y0

  X1-X0   Y1-Y0      X1-X0

乘除运算的两个因素,都已经是先做了减法得到增量再运算的。感觉好像可以的喔。而最后才是加法。

Y版,你觉得有没有问题?

在乘除运算的时候我意识到一个问题。100÷23=?这样计算用整数运算失真可就大了。所以要用实数运算。

而又不可以全部使用实数,因为2^31=21亿这个数是个十位数,转换成实数的话只保留了7位有效数字,这么一转换,简直就是失真得不要不要的。所以这一道公式,加减用32位整数运算,乘除用实数运算。我心里就更加忐忑了。到底行不行?

Y版。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9498条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。