跳到主要内容

计算

把一段文本当成公式或表达式来计算。只要比两个数,用 比较数字;只要赋给变量,用 赋值

当前模块定义

概述

例如 3*5+20 得到 3515>6 得到真。可结合 插值 把变量嵌进公式:表达式写成 $$ {变量a} > 5 and {变量a} < 20,若 变量a30,插值后变成 30 > 5 and 30 < 20,结果为假。

参数说明

表达式:要计算的公式。

增强模式:开启后支持在表达式里使用 {变量名} 和 C# 的 Math。默认关闭。

失败后停止:计算失败是否中止动作。默认开启。旧稿未写。

输出

  • 是否成功:计算是否成功。旧稿未写。
  • 结果:计算结果。

普通模式与增强模式

普通模式

内部使用 NCalc。也可以结合插值:

  • 类型转换:$${含有数字的文本变量} → 数字;$$ '{数字}' → 文本
  • 判断:$$ {变量} > 5 and {变量} < 30
  • 计算:50 * 2 * Sqrt(40)Min(1,2)

以下运算符和函数说明有部分转载自 tangyikejun 的文章,感谢。

普通模式支持的运算符

  1. 原子运算符 (, )
  2. 单目运算符 !, not, -, ~(按位取反)
  3. 幂次运算符;位运算符 &, |, ^(xor), <<, >>
  4. 乘除运算符 *, /, %
  5. 加减运算符 +, -
  6. 关系运算符 =, ==, !=, <>, <, <=, >, >=
  7. 逻辑运算符 or, ||, and, &&

普通模式支持的函数

结果中的 M 代表 Decimal,d 代表 Double。

函数名描述用例用例结果
Abs绝对值Abs(-1)1M
Acos反余弦Acos(1)0d
Asin反正弦d
Atan反正切d
Ceiling向上取整Ceiling(1.5)2d
Cos余弦d
Expe 的 X 次幂Exp(0)1d
Floor向下取整Floor(1.5)1d
IEEERemainderIEEE 754 取余。普通取余用 %,如 15 % 7 为 1IEEERemainder(3, 2)-1d
Log以第二参数为底取对数Log(1,10)0d
Log10以 10 为底Log10(1)0d
Max较大值Max(1,2)2
Min较小值Min(1,2)1
Pow乘方Pow(3,2)9d
Round第二参数是小数位。舍入为奇进偶舍Round(3.222,2)3.22d
Sign符号Sign(-10)-1
Sin正弦d
Sqrt平方根Sqrt(4)2d
Tan正切d
Truncate截取整数部分Truncate(1.7)1

其它通用函数:

函数名描述用例结果
in第一个元素是否在后面的值之中in(1 + 1, 1, 2, 3)true
if类似 条件 ? a : bif(3 % 2 = 1, 'value is true', 'value is false')'value is true'

自定义函数:把 Unix 时间戳转成时间 UnixTimestampToDateTime(1552437663)

增强模式

语法与通用 表达式 相同。前面不必写 $=;如果写了,会先算一遍,再把结果当成表达式算第二遍。

限制与排障

普通模式不认 {变量名},要把变量嵌进去请用插值 $$,或打开增强模式。增强模式里再写 $= 会解析两遍,结果往往不是你想要的。公式非法时步骤失败,可看 是否成功

示例动作

相关链接

更新于