【原创】.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 }

4.资源

自由发挥,有了这个基础的东西,可以做出很多小工具啊。希望对大家有用。还有更多的功能期待大家发掘。

相关文章
|
15天前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
15天前
|
C#
.NET开源、免费、强大的交互式绘图库
.NET开源、免费、强大的交互式绘图库
|
15天前
|
存储 文字识别 C#
.NET开源免费、功能强大的 Windows 截图录屏神器
今天大姚给大家分享一款.NET开源免费(基于GPL3.0开源协议)、功能强大、简洁灵活的 Windows 截图、录屏、Gif动图制作神器:ShareX。
|
15天前
|
数据可视化 开发工具 C#
.NET开源、免费、跨平台的Git可视化管理工具
俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛。今天大姚给大家分享一款.NET Avalonia开源、免费、跨平台、快速的Git可视化管理工具:SourceGit。
|
2月前
|
开发框架 JavaScript 前端开发
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
|
2月前
|
前端开发 C# 数据库
.NET中使用BootstrapBlazor组件库Table实操篇
.NET中使用BootstrapBlazor组件库Table实操篇
|
3月前
|
开发框架 前端开发 .NET
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
|
15天前
|
搜索推荐 API C#
.NET开源快速、强大、免费的电子表格组件
.NET开源快速、强大、免费的电子表格组件
|
2月前
|
Linux C# Android开发
.NET Avalonia开源、免费的桌面UI库 - SukiUI
.NET Avalonia开源、免费的桌面UI库 - SukiUI
|
1月前
|
C# 开发者
.NET开源的两款第三方登录整合库
.NET开源的两款第三方登录整合库