基于文本的基本公式计算器功能/类

时间:2017-04-21 22:08:25

标签: c# math operators formula

寻找类似

的内容

int Result; 
DataTable dt2 = new DataTable();
var v = dt2.Compute("3+2-34*12", "");
Result=Convert.ToInt32(v);

上面的代码,它解决了文本库公式。不幸的是,上面的代码只适用于一些基本的运算符(+, - ,/,*)。需要更复杂的一个(如squareroot,至少^)。

你能帮我找一些更复杂的方程吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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 Framework 4.6+或.NET Core 1.1