Gibt es eine einfache Möglichkeit, einen einfachen mathematischen Ausdruck zu analysieren, der als eine Zeichenfolge wie (x + (2 * x) / (1-x)) dargestellt wird, einen Wert für x liefert und ein Ergebnis erhält?
Ich habe die VSAEngine anhand mehrerer Online-Beispiele angeschaut. Ich erhalte jedoch eine Warnung, dass diese Assembly veraltet ist und sie nicht mehr verwendet wird.
Wenn es Unterschiede gibt, verwende ich .NET 4.0.
Sie können versuchen, DataTable.Compute zu verwenden.
>Eine verwandte ist DataColumn.Expression .
>Siehe auch: Mathe in vb.net machen Eval in Javascript
Hinweis: Ich habe diese selbst nicht benutzt.
Ich fordere Sie dringend dazu auf, einen vorhandenen generischen Ausdruck-Evaluator über einen speziell entwickelten Mathe-Evaluator zu wählen. Der Grund dafür ist, dass die Ausdruckbewerter nicht nur auf Mathematik beschränkt sind. Ein schlauer Mensch könnte dies verwenden, um eine Instanz eines beliebigen Typs im Framework zu erstellen und jede Methode des Typs aufzurufen, die es ihm erlauben würde, einige entschieden unwillkommene Dinge zu tun. Zum Beispiel: new System.Net.WebClient().DownloadFile("illegalchildpornurl", "C:\openme.gif")
wird in den meisten davon gut bewertet und tut genau das, was es klingt (und macht gleichzeitig einen Verbrecher).
Das bedeutet nicht, dass Sie nicht nach etwas suchen, das bereits geschrieben wurde. Es bedeutet nur vorsichtig zu sein. Sie wollen eine, die Mathe und nur Mathe tut. Das meiste, was schon da draußen ist, ist nicht so wählerisch.
Ich habe kürzlich mXparser verwendet, eine mathematische Parser-Bibliothek. Es gibt Ihnen viel Flexibilität, wie Variablen, Funktionen, Konstanten, Operatoren. Im Folgenden finden Sie einige Anwendungsbeispiele:
Beispiel 1 - einfache Formel
%Vor%Beispiel 2 - Formel mit Variablen, Funktionen, etc.
%Vor%Mit freundlichen Grüßen
Eine weitere Option, die Sie vielleicht untersuchen möchten, ist die Ausdrucksauswertung des Spring.NET-Frameworks Funktionalität. Es kann viel mehr als nur Mathematik.
Allerdings kann das gesamte Spring.NET Framework für Ihre Anforderungen etwas übertrieben sein, wenn Sie nicht den Rest der Funktionalität benötigen.
Hier ist ein Weg, es zu tun. Dieser Code ist in Java geschrieben. Beachten Sie, dass es momentan keine negativen Zahlen behandelt, aber Sie können das hinzufügen.
%Vor%}
Sie müssen java.util.Map importieren.
Hier ist, wie ich diesen Code verwende:
%Vor%Wie ich in diesem Thread geantwortet habe ( Bester freier C # -Mathe-Parser mit Variablen, benutzerdefinierten Funktionen, benutzerdefinierten Operatoren ), können Sie Mathos Parser verwenden , die Sie einfach in Ihren Quellcode einfügen können.
%Vor%