2017-04-21 102 views
0

尋找類似文本基於基本計算式計算器功能/

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

上面的代碼,它解決了文本基礎公式。不幸的是,上面的代碼只適用於一些基本的運算符(+, - ,/,*)。需要更復雜一點(比如squareroot,^至少)。

你能幫我找些東西解決一些更復雜的方程嗎?

+0

http://mathparser.org/? – Aybe

回答

0

您可以使用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