2011-09-16 19 views
5

Se ho una variabile stringa con una formula:Come convertire formula stringa in una formula matematica in C#

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

Come posso convertire questa stringa a una formula matematica che il compilatore può calcolare?

+0

Per qualcosa il compilatore può calcolare hai bisogno di una costante espressione nel codice, in modo qualcosa di simile a '3 * 5 + 2 * 2 * 2'. Non intendi che il tuo codice dovrebbe valutarlo? – Joey

+3

il compilatore compila solo –

+1

Finalmente ho ricevuto la libreria FLEE. Lo strumento è gratuito e perfettamente adatto a questo scopo. –

risposta

9

Infine ho ottenuto la libreria FLEE per questo scopo. Lo strumento è gratuito e perfettamente adatto al tuo scopo. Di seguito è riportato un esempio di come utilizzare questa libreria:

// 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

Non so perché menzionare un compilatore, ma il modo più semplice sarà utilizzare un analizzatore di espressioni matematiche, ad esempio NCalc.

0

Forse this è disponibile, ma quella biblioteca non poteva sostenere "Math.pow".

0

È possibile aggiungere un riferimento a Microsoft Script Control Library (COM) e utilizzare un codice come questo per valutare un'espressione. (Funziona anche per JScript.)

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