2011-09-16 38 views
5

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?

+0

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

+3

el compilador solo compila –

+1

Finalmente obtuve la biblioteca FLEE. La herramienta es gratuita y perfectamente adecuada para este propósito. –

Respuesta

9

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(); 
4

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.

0

Tal this es útil, pero que la biblioteca no puede apoyar "Math.pow".

0

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()); 
Cuestiones relacionadas