Avez-vous vu http://ncalc.codeplex.com ?
Il est extensible, rapide (par exemple, il possède son propre cache) et vous permet de fournir des fonctions personnalisées et des variables au moment de l'exécution en traitant les événements EvaluateFunction/EvaluateParameter. Exemples d'expressions qu'il peut analyser :
Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
e.Parameters["Pi2"] = new Expression("Pi * Pi");
e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args)
{
if (name == "Pi")
args.Result = 3.14;
};
Debug.Assert(117.07 == e.Evaluate());
Il gère également l'unicode et de nombreux types de données de manière native. Il est livré avec un fichier de bois si vous voulez changer la grammaire. Il existe également un fork qui supporte MEF pour charger de nouvelles fonctions.
2 votes
Il n'y en a pas d'intégré. Mais il en existe un assez complet aquí .
0 votes
Voir aussi, Est-il possible de traduire une équation mathématique saisie par l'utilisateur en code C# au moment de l'exécution ?
1 votes
Vous pouvez utiliser L'évaluateur d'expression (Fonction d'évaluation dans un environnement .NET 100% géré)
0 votes
Je viens de créer une solution en code seul pour évaluer des expressions mathématiques en C#. Vous pouvez voir le code à blackbeltcoder.com/Articles/algorithmes/a-c-expression-evaluateur .
0 votes
Cette bibliothèque semble avoir quelques bogues.
0 votes
Il peut être utile de consulter ma réponse ici, qui utilise Mono.CSharp.Evaluator et devrait être capable de faire ce que vous demandez et même plus. stackoverflow.com/questions/4979423/
0 votes
Duplicata possible de c# évaluation de la chaîne "3*(4+2)" rendement int 18