文本基于基本计算式计算器功能/
问题描述:
类
寻找类似文本基于基本计算式计算器功能/
int Result;
DataTable dt2 = new DataTable();
var v = dt2.Compute("3+2-34*12", "");
Result=Convert.ToInt32(v);
上面的代码,它解决了文本基础公式。不幸的是,上面的代码只适用于一些基本的运算符(+, - ,/,*)。需要更复杂一点(比如squareroot,^至少)。
你能帮我找些东西解决一些更复杂的方程吗?
答
您可以使用Roslyn scripting API。添加Microsoft.CodeAnalysis.CSharp.Scripting包和评估C#代码:
static async Task<double> EvaluateFormulaAsync(string formula)
{
return await CSharpScript.EvaluateAsync<double>(formula,
ScriptOptions.Default.WithImports("System.Math"));
}
用法:
var result = EvaluateFormulaAsync("Sqrt(2) + 2 * 15").Result; // 31.4142135623731
注:脚本API需要.NET框架4.6+或.NET核心1.1
http://mathparser.org/? – Aybe