Parse Math Ausdruck

7

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.

    
Brandon 19.10.2010, 21:19
quelle

9 Antworten

5

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.

    
Aryabhatta 19.10.2010, 21:28
quelle
10

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.

    
Joel Coehoorn 19.10.2010 21:39
quelle
5

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

    
Leroy Kegan 04.03.2016 21:47
quelle
3

Ich würde auch Jace ( Ссылка ) sehen. Jace ist eine leistungsstarke Mathe-Parser- und Berechnungs-Engine, die alle .NET-Varianten unterstützt (.NET 4.x, Windows Phone, Windows Store, ...). Jace ist auch über NuGet erhältlich: Ссылка

    
MuSTaNG 27.01.2014 08:19
quelle
1

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.

    
Joshua Rodgers 19.10.2010 21:31
quelle
1

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%     
user4617883 15.10.2017 05:02
quelle
0

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%     
Artem 30.04.2013 14:58
quelle
0

Ich empfehle Ihnen, hierfür MEEL zu verwenden.

%Vor%     
supertoha 06.02.2015 10:26
quelle

Tags und Links