最近遇到一个需要计算字符串中表达式的需求,需要从字符串公式中动态计算结果。
类似下面这样
1 string expression = "Age * 0.2 + Height * 0.1 + log4";
使用DataTable.Compute函数
一开始找的是下面这种方法,但是不能计算对数
1 using System.Data; 2 3 DataTable dt = new DataTable(); 4 var result = dt.Compute(expression,"");
执行VBS脚本计算
后面又找了一种方法,利用VBS脚本里的计算功能,这种方法基本能满足需求了,复杂计算也可以。
方法如下
需要引用COM组件Microsoft Script Control 1.0
1 MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl(); 2 sc.Language = "VBScript"; 3 object result = sc.Eval("18 * 0.2 + 170 * 0.1 + log4"); 4 Console.WriteLine(result.ToString());
参考资料
https://stackoverflow.com/questions/333737/evaluating-string-342-yield-int-18
https://stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net
标签:string,C#,sc,result,计算,字符串,DataTable,表达式 From: https://www.cnblogs.com/zhaotianff/p/18330363