在有大量公式的实数计算中的精确度如何
在有大量公式的实数计算中的精确度如何?
显示订货号
6ES7810-4.. SIMATIC S7, STEP7 Vx.x
描述:
一般来讲,实数的定义和计算可保持精确到小数点后6位。计算时还要注意这一精度要在计算的每一步中保持。
加和减时,按指数归齐,也就是基数和指数对加和减相同,只加入尾数。 样例1:
要计算:
y = a + b - c;
z =1 / y;
使用
a = 100 000 000 即实数值 = 1.000000*108
b = 1 即实数值 = 1.000000*100
c = 100 000 000 即实数值 = 1.000000*108
在第一步计算中(a + b)计算为:
(a + b) = 1.000000*108 + 1.000000*100 在指数对齐后得到
(a + b) = 1.000000*108 + 0.00000001*108. 最后两位被截掉,因为它们不能再显示(精确到小数点后6位) 。
∙ 所以加上零。
∙ 在第二步计算((a + b)-c)中,c 要从前一步计算结果中减去:
((a + b)-c) = 1.000000*108 - 1.000000*108 = 0.000000e0
∙ 如果现在求z ,那么除数即为零。 ∙
这种情况下正确的答案可通过转换计算公式得到。
y = a - c + b;
z = 1 / y;
在这里,计算 (a - c)后,得到 结果为0.000000e 0 ,在第二步计算 ((a -c) + b),
图1:LAD/FBD/STL编辑器中的两种计算方案程序
使用S7-SCL 选项包的样例计算:
以下S7-SCL 程序包含两个函数。用函数FC10通过“X1*X2”实现实数除法而用函数FC11可用“X3/X4”实现除法。当函数在OB1中调用时结果传送到标记双字MD10和MD20。
图2:用于表1中两种计算方案的S7-SCL 程序
函数的结果(MD10和MD20) 在“ Monitor/Control Variables”表中各自以HEX 和浮点格式显示。这里两种方案中的实数也都是1.6,但在HEX 显示中最后两位因一个HEX 值而不同。
图3:S7-SCL 中以HEX 和浮点格式显示结果的“Monitor/Control Variables”表 关键字:
计算精确度