之前写了一篇Z.Expressions表达式计算的博客,直到最近才发现Z.Expressions不是免费的。Z.Expressions从2.0开始支持了NetCore,使用一段时期后会提示许可证到期,需要更新成最新的DLL,很不方便。最近在搜寻资料,发现了DynamicExpresso库,参考资料:https://www.cnblogs.com/songxingzhu/p/6737618.html

使用起来也很简单,一个简单的例子如下:

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using DynamicExpresso;
7
8 namespace ConsoleApplication1
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 Interpreter interpreter = new Interpreter();
15 Dictionary<string, object> dict = new Dictionary<string, object>();
16
17 dict.Add("a", 1.0);
18 dict.Add("b", 2);
19 dict.Add("d", 4);
20 dict.Add("e", 5);
21
22 foreach (var v in dict)
23 {
24 object value = v.Value;
25 int para = 0;
26 if (int.TryParse(v.Value.ToString(), out para))
27 {
28 value = (float)para;
29 }
30 interpreter.SetVariable(v.Key, value);
31 }
32
33 Console.WriteLine(interpreter.Eval("a+b").ToString());
34 Console.WriteLine(interpreter.Eval("a*d").ToString());
35 Console.WriteLine(interpreter.Eval("b/d").ToString());
36 }
37 }
38 }

要注意的是除法运算时,如果都是整数,那么就存在为0的可能性,例如2/5。要避免这种情况可以将整数转换成浮点数,例如5改为5.0,这样计算结果为浮点数。

最新文章

  1. 如何利用FineBI做财务分析
  2. MongoDB 安装
  3. 【原创Android游戏】--猜数字游戏Version 0.1
  4. 38. Same Tree &amp;&amp; Symmetric Tree
  5. jquery的隐式类型转换
  6. JSTL&amp;EL(程序员必看之一)
  7. jQuery序列化后的表单值转换成Json
  8. vs2010中iostream.h出错
  9. iOS8 UITableView 分割条设置separator intent = 0 不起作用
  10. JavaScript实现全选和全不选
  11. linux命令技巧
  12. bittorrent 学习(二) LOG日志和peer管理连接
  13. CSS【06】:CSS显示模式
  14. Chrome快捷键大全
  15. 如何搭建hibernate框架
  16. gzip是一种数据格式,deflate是一种压缩算法
  17. OpenStack环境中的NFV实践
  18. jQuery之回到顶部
  19. Emgu.CV.CvInvoke”的类型初始值设定项引发异常
  20. Web中树形数据(层级关系数据)的实现—以行政区树为例

热门文章

  1. 20分钟理清Maven构建中的测试相关工具的关系
  2. 牛客网数据库SQL实战解析(1-10题)
  3. 标准git请求
  4. 什么是谷歌PageRank (简称PR值)
  5. py_选择排序
  6. Orleans 知多少 | Orleans 中文文档上线
  7. Javascript常见数据类型API
  8. TCP/IP网络编程之socket交互流程
  9. 一篇文章高效定位iframe
  10. FileZilla Server FTP服务器失败