【原创】.NET开源表达式计算组件介绍与使用
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html
本博客其他.NET开源项目文章目录:http://www.cnblogs.com/asxinyu/p/4329755.html
1.前言
日常开发中有很多地方使用到表达式计算,比如一个庞大灵活的人力资源管理系统中,涉及到薪酬管理,某些单位可能会经常对工资格式,计算方式进行变动,这个时候表达式计算就可以派上用场,当然还有很多地方,比如数学计算等环节中,对表达式计算的需求也挺多的。今天就像大家介绍一款开源的.NET表达式计算组件NCalc,该组件很小,但功能强大,包括了很多不同类型的表达式计算,下面就将详细介绍其功能和使用。
2.NCalc组件功能特点
首先,这款组件是开源的,开源地址在:http://ncalc.codeplex.com/ ,可以下载Dll和源代码,看看实现过程。
其次,该组件不仅支持数学表达式计算,还支持很多基础的数学函数,支持参数,以及支持逻辑运算符号。使用简单。
3.NCalc组件基本使用入门
NCalc的使用很简单,只需要初始化一个Expression对象,然后给它传入参数,调用Evaluate方法即可得到结果。下面将对NCalc支持的各种表达式计算进行一个简单的演示,包括一下内容:
1.最简单的数学运算
2.简单的逻辑运算
3.简单的参数表达式计算
4.支持数学函数运算
先看效果图:
再看核心代码:
1 string[] temp = txtExpress.Text.Trim().Split(new String[] { "\r\n" }, 2 StringSplitOptions.RemoveEmptyEntries); 3 foreach (var item in temp ) 4 { 5 //对当前的表达式再次进行分割,若有参数,则添加参数 6 if (item.Contains(';')) 7 { //第一个是表达式,后面的;号都是参数名称和参数值 8 string[] param = item.Split (new char[]{';'}, 9 StringSplitOptions.RemoveEmptyEntries); 10 Expression exp = new Expression(param[0]); 11 //添加参数 12 for (int i = 1; i < param.Length ; i++) 13 { 14 //等号左边是参数名,等号右边是值,输入错误检测暂时不处理 15 string[] nameValue = param[i ].Split ('='); 16 //这里注意要对值类型进行转换,否则会直接作为字符串对待,结果会有不同 17 exp.Parameters[nameValue[0]] = Convert.ToDouble( nameValue[1]); 18 } 19 //计算结果 20 txtResult.Text += (exp.Evaluate().ToString () + "\r\n"); 21 } 22 else 23 { 24 string result = new Expression(item).Evaluate().ToString(); 25 txtResult.Text += (result + "\r\n"); 26 } 27 }
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
.NET数据挖掘与机器学习,作者博客: http://www.cnblogs.com/asxinyu
E-mail:1287263703@qq.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?