Existe-t-il un moyen facile d'évaluer les chaînes comme "(4+8)*2"
Pour obtenir la valeur int de 24?Évaluation de la chaîne C# avec les opérateurs mathématiques
Ou y a-t-il beaucoup de travail à faire pour y arriver ...?
Existe-t-il un moyen facile d'évaluer les chaînes comme "(4+8)*2"
Pour obtenir la valeur int de 24?Évaluation de la chaîne C# avec les opérateurs mathématiques
Ou y a-t-il beaucoup de travail à faire pour y arriver ...?
Utilisation Ncalc:
Expression e = new Expression("(4+8)*2");
Debug.Assert(24 == e.Evaluate());
En outre, cette question avait été posée précédemment et a quelques réponses intéressantes, y compris Ncalc: Evaluating string "3*(4+2)" yield int 18
Pour cela, vous avez besoin d'un analyseur d'expressions mathématiques. Voici les ressources sur ce point:
Quelqu'un d'autre a ajouté ceci et il a été supprimé. Je pensais que c'était plutôt cool parce qu'aucune bibliothèque tierce n'était requise.
class Program { static void Main(string[] args) { Console.WriteLine(Evaluate("(4+8)*2")); Console.ReadKey(); } public static double Evaluate(string expression) { DataTable table = new DataTable(); table.Columns.Add("expression", typeof(string), expression); DataRow row = table.NewRow(); table.Rows.Add(row); return double.Parse((string)row["expression"]); } }
En A mon usage, cette solution était environ 1.5x plus rapide que NCalc, tout en étant également stable (au moins pour ce que je faisais). Il a manipulé des expressions booléennes tout comme NCalc. Cela devrait être annoncé plus. – tootsiejasmine
Cela ne gère pas les pouvoirs ou les racines carrées. – seekerOfKnowledge
cette solution est parfaite pour les expressions simples comme j'en ai besoin. Merci de l'avoir posté de nouveau. – zreptil
Vous pouvez consulter: [L'évaluateur d'expression revisitée (fonction Eval dans .NET géré à 100%)] (http://www.codeproject.com/KB/recipes/eval3.aspx) –