数学函数
- Last UpdatedSep 24, 2024
- 1 minute read
使用数学函数可返回指定数学表达式的答案。
在 QuickScript 中,无论运算数是哪种数据类型,所有数学运算都是在内部按双精度计算的。按照标准数学法则,在除法计算中,计算结果总是四舍五入以保持一定的精度。只有最终计算结果会四舍五入,中间值不会,商会匹配目标数据类型。这是 SCADA 和 DCS 系统的标准方法,可提供这些系统所需的数据完整性、精度保留、时间标签,以及总体数据质量传播和聚集。
如果不仅要对最终结果四舍五入,而且要在每一步中四舍五入,则可利用 QuickScript 中内置的 .NET 库支持,并利用 System.Math.Floor 和 System.Math.Round 方法明确指定对中间步骤四舍五入。作为示例,以下脚本可供参考:
dim dividend as integer;
dim divisor as integer;
dim quotient as integer;
dim remainder as integer;
dividend = 8;
divisor = 3;
LogMessage("Value of dividend = " + dividend);
LogMessage("Value of divisor = " + divisor);
quotient = dividend/divisor;
LogMessage("Value of quotient = " + quotient);
remainder = dividend mod divisor;
LogMessage ("Value of remainder = " + remainder);
dividend = divisor*quotient +remainder;
LogMessage ("Value of dividend = " + dividend);
结果为:8 / 3 = 3
如果您不想将最终结果四舍五入为最接近的整数,而是想舍弃余数,则可添加调用 Math.Floor 方法,并使用以下脚本:
dim dividend as integer;
dim divisor as integer;
dim quotient as integer;
dim remainder as integer;
dividend = 8;
divisor = 3;
LogMessage("Value of dividend = " + dividend);
LogMessage("Value of divisor = " + divisor);
// *** 添加调用 Math.Floor。这样就会舍弃余数,而不会将中间的双精度结果四舍五入为整数
quotient = System.Math.Floor(dividend/divisor);
LogMessage("Value of quotient = " + quotient);
remainder = dividend mod divisor;
LogMessage ("Value of remainder = " + remainder);
dividend = divisor*quotient +remainder;
LogMessage ("Value of dividend = " + dividend);
结果为:8 / 3 = 2(余数 2)