Y a-t-il un moyen facile d'évaluer les cordes comme
ou y a-t-il beaucoup de travail nécessaire pour que cela soit fait ...? P> "(4 + 8) * 2" code>
Afin que vous obteniez la valeur int de 24? P>
3 Réponses :
Vous avez besoin d'un analyseur d'expression mathématique pour cela. Vous trouverez ci-dessous des ressources à ce sujet: P>
Utilisez ncalc: En outre, cette question avait déjà été posée et a des réponses intéressantes, y compris NCALC: ÉVALUATION STRING" 3 * (4 + 2) "RENDEMENT INT 18 P> P>
Quelqu'un d'autre a ajouté cela, puis il a été supprimé. Je pensais que c'était assez cool car aucune bibliothèques tiers requise.
Dans mon utilisation, cette solution était d'environ 1,5 fois plus rapide que NCALC, tout en étant aussi stable (au moins pour ce que je faisais). Il a manipulé des expressions booléennes aussi identiques que NCALC. Cela devrait être annoncé davantage.
Cela ne gère pas les pouvoirs ou les racines carrées.
Cette solution est parfaite pour les expressions simples que j'en ai besoin. Merci de la ré-poster.
En attendant, j'ai trouvé un problème: les chiffres avec des fractions (comme 1,5) sont analysés avec point (.) Étant le seul séparateur autorisé. est-ce correct? Puis-je compter sur cela dans chaque langue? En allemand, le séparateur standard pour les fractions est Komma (,). Mais quand j'utilise cela, l'analyse échoue.
Zreptil: Vous devez vous assurer que toutes les valeurs de numéro dans votre expression sont écrites à la chaîne avec l'invariantCulture -> i.e.: mydouble.tostring (système.globalization.cultureInfo.invariant culture)
Quelqu'un a-t-il un lien avec quelque chose qui établirait les limitations de cette technique? Ce qui est autorisé / non autorisé, etc.
Ne prenez pas de maintenance des fonctions du journal, de la puissance et des exponentielles
Pas une mauvaise réponse, mais c'est un peu wordy que vous pouvez simplement: double.parse (nouveau îne.data.datatable (). Compute (expression, ""))
Solution très intelligente. Mais un inconvénient supplémentaire est qu'il ne prend pas en charge les opérations binaire, telles que | pour ou, et pour et etc.
Vous pouvez regarder: L'évaluateur d'expression revisité (fonction EVAL dans 100% gérée .NET. )