Si tengo una variable de cadena con una fórmula:Cómo convertir fórmula cadena a una fórmula matemática en C#
string myformula = "3 * 5 + Pow(2,3)";
¿Cómo puedo convertir esta cadena a una fórmula matemática que el compilador puede calcular?
Si tengo una variable de cadena con una fórmula:Cómo convertir fórmula cadena a una fórmula matemática en C#
string myformula = "3 * 5 + Pow(2,3)";
¿Cómo puedo convertir esta cadena a una fórmula matemática que el compilador puede calcular?
Finalmente obtuve la biblioteca FLEE para este propósito. La herramienta es gratuita y se adapta perfectamente a su propósito. continuación se muestra un ejemplo de cómo utilizar esta biblioteca:
// 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();
No estoy seguro de por qué mencionaría un compilador, pero la forma más simple será utilizar un evaluador de expresiones matemáticas, por ejemplo NCalc.
Tal this es útil, pero que la biblioteca no puede apoyar "Math.pow".
Puede agregar una referencia a Microsoft Script Control Library (COM) y usar un código como este para evaluar una expresión. (También funciona para JScript.)
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "VBScript";
string expression = "1 + 2 * 7";
object result = sc.Eval(expression);
MessageBox.Show(result.ToString());
Para algo que el compilador puede calcular, necesita una expresión constante en el código, algo así como '3 * 5 + 2 * 2 * 2'. ¿No quiere decir que su propio código debería evaluarlo? – Joey
el compilador solo compila –
Finalmente obtuve la biblioteca FLEE. La herramienta es gratuita y perfectamente adecuada para este propósito. –