real数据类型为什么只显示4位小数_0

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

real数据类型为什么只显示4位小数
real数据类型为什么只显示4位小数?如图所示,dbd6和dbd40都是real类型。

我是采用dbd6+dbd40所得的和再放入到dbd6然而dbd40有若干位小数,而相加后的和也就是dbd6只有4位小数,这样造成了很大误差,请问问题出现在哪里?如何将dbd6也设置为显示多位的小数?
图片说明:1,12,11
最佳答案
s7-300/400里的浮点数是符号ieee754标准的单精度浮点数,占4个字节,有效数字不可能很多,当一个比较大的浮点数加上一个比较小的浮点数就可能产生比较大的误差,所以浮点数计算的一个常识就是要避免大小悬殊的数相加,你这应该是属于不断的累加吧,如果是给你推荐一个算法增加一个变量用于保存计算误差,比如是dbd100,那么计算过程如下
ld0=dbd40+dbd100把上一次的误差累加进去
ld4=dbd6+ld0这样当前累加量和上一次计算丢失的值都加进去
dbd100=ld4-dbd6+ld0计算一下本次累加误差丢失的值
dbd6=ld4更新当前累加值
这个算法的核心就在于,如果要加的数比较小,和大数相加会丢失数值,丢失的数值会和下一次的值累加,这样当达到一定的程度,就可以累加到大数里了。

相关文档
最新文档