如何在c#中将字符串公式转换为数学公式

本文关键字:转换 数学公式 字符串 | 更新日期: 2023-09-27 18:08:41

如果我有一个带有公式的字符串变量:

string myformula = "3 * 5 + Pow(2,3)";

如何将此字符串转换为编译器可以计算的数学公式?

如何在c#中将字符串公式转换为数学公式

最后我得到了这个目的的escape库。该工具是免费的,完全适合您的目的。下面是如何使用这个库的示例:

// Define the context of our expression
ExpressionContext context = new ExpressionContext();
// Allow the expression to use all static public methods of System.Math
context.Imports.AddType(typeof(Math));
// Define an int variable
context.Variables["a"] = 100;
// Create a dynamic expression that evaluates to an Object
IDynamicExpression eDynamic = context.CompileDynamic("sqrt(a) + pi");
// Evaluate the expressions
double result = (double)eDynamic.Evaluate();

不知道为什么要提到编译器,但最简单的方法是使用数学表达式求值器,例如NCalc。

您可以添加对Microsoft Script Control Library (COM)的引用,并使用像这样的代码来计算表达式。(也适用于JScript)

MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "VBScript";
string expression = "1 + 2 * 7";
object result = sc.Eval(expression);            
MessageBox.Show(result.ToString());