首先,这款组件是开源的,NCalc是.net中的一个数学表达式求值程序。NCalc可以解析任何表达式并计算结果,包括静态或动态参数和自定义函数。
官网地址:http://ncalc.codeplex.com/
源码地址:https://github.com/sheetsync/NCalc
Nuget安装Dependence ,如下:
简单表达式:
Expression e = new Expression("2 + 3 * 5");
var result=e.Evaluate();复制
支持.NET数据类型
支持int,date,float,bool,string等数据格式
处理Math中的数学函数
Debug.Assert(0 == new Expression("Sin(0)").Evaluate());
Debug.Assert(2 == new Expression("Sqrt(4)").Evaluate());
Debug.Assert(0 == new Expression("Tan(0)").Evaluate());复制
自定义计算表达式
public static object Calcuate(string expression,Snapshot snapshot,Status status)
{
Expression e = new Expression(expression);
e.EvaluateFunction += delegate (string name, FunctionArgs args)
{
if (name.Equals("Prop"))
{
string tagName = args.Parameters[0].Evaluate().ToString();
RTData rtData=snapshot.ReadTag(tagName);
args.Result = rtData.Value;
}
else if (name.Equals("Value"))
{
string loopName = args.Parameters[0].Evaluate().ToString();
args.Result = status.GetLoopValue(loopName);
}
};
return e.Evaluate();
}复制
其中Prop,Value就是自定义函数,可以根据自身逻辑进行编写。调用代码基本是这样,这是一个递归调用的过程,先解析出Prop和它的参数,然后再依次解析参数。需要注意的是每个函数返回的值类型必须一致,否则在做四则运算时就会报错了,这个很好理解。
文章转载自码农游乐场,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家观点】罗敏:从理论到真实SQL,感受DeepSeek如何做性能优化
墨天轮编辑部
1242次阅读
2025-03-06 16:45:38
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1223次阅读
2025-03-13 11:40:53
2025年2月国产数据库大事记
墨天轮编辑部
963次阅读
2025-03-05 12:27:34
2025年2月国产数据库中标情况一览:GoldenDB 3500+万!达梦近千万!
通讯员
852次阅读
2025-03-06 11:40:20
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
441次阅读
2025-03-13 14:38:19
AI的优化能力,取决于你问问题的能力!
潇湘秦
410次阅读
2025-03-11 11:18:22
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
337次阅读
2025-03-21 10:34:08
达梦数据与法本信息签署战略合作协议
达梦数据
282次阅读
2025-03-06 09:26:57
国产化+性能王炸!这套国产方案让 3.5T 数据 5 小时“无感搬家”
YMatrix
268次阅读
2025-03-13 09:51:26
磐维数据库对外门户全新升级!
磐维数据库
233次阅读
2025-03-04 15:32:59