2017-03-12 2 views
2

Ich bin neu hier! Ich bin ein Neuling in C#. Einer meiner Freunde forderte mich auf, einen wissenschaftlichen Taschenrechner zu erstellen. Ich suchte und fand einen einfachen Weg, um es hier zu machen - mit der System.Data-Bibliothek. Ein Beispiel haben wir diese:So berechnen Sie Sünde mit System.Data.Compute() in C#

string math = "5 + 3 * 3"; 
string answer = new DataTable().Compute(math, null).ToString(); 

Diese recht einfach mit einfachen Ausdrücken gearbeitet, aber ich kann nicht einen Weg zu finden scheinen, wie der Rechner machen können Sünde berechnen, cos e.t.c. Hat jemand eine Idee?

PS: ich in Englisch nicht so gut bin plz mir verzeihen

+0

'DataTable' und seine Methoden sind für den Betrieb in Zeilen und Spalten gedacht, nicht für wissenschaftliche Berechnungen. Verfügbare Optionen sind [dokumentiert hier] (https://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression (v = vs.110) .aspx) und sind auf SQL-ähnliche Ausdrücke beschränkt. –

+0

Ich bin mir dessen bewusst. Ich wollte nur fragen, ob das möglich ist, weil ich den Rechner schon so gebaut habe. –

+1

Ich glaube nicht, dass es möglich ist, vielleicht können Sie sich [spezialisierte Bibliotheken] (http://mathparser.org) zu diesem Zweck ansehen. –

Antwort

1

Werfen Sie einen Blick auf die Mathe-Klasse, aber so etwas wie dies sollte

string math = "5 + 3 * 3"; 
    string answer = new DataTable().Compute(math, null).ToString(); 
    answer = Math.Sin(Convert.ToDouble(answer)).ToString(); 
2

Dank Mat J für Sie arbeiten für das Erklären ich über mXparser! Ich habe einen Weg gefunden, es zu berechnen, ohne viel Code zu ändern! Hier

ist der mXparser: http://mathparser.org/

Dies ist, wie der Code geändert hat: Es war:

string math = "5 + 3 * 3"; 
string answer = new DataTable().Compute(math, null).ToString(); 

Nun ist es:

string math = "5 + 3 * 3"; 
Expression e = new Expression(math); 
math = e.calculate(); 

Das einzige, was es ist arbeitet mit Expressions anstelle von Strings, funktioniert aber trotzdem sehr einfach und einfach!

Ich möchte mich für die schnellen Antworten von allen bedanken! Du hast mir wirklich geholfen!

+1

Gut zu wissen, berücksichtigen Sie den Link und ein Beispiel Code-Snippet, damit andere Leute davon Gebrauch machen können. –

1
You can use the System.Math library. But System.Data library is related to ado.net operation. 
Example: 
    string input=90 
    var output =System.Math.Sin(Convert.ToDouble(input))); 
    output =System.Math.Cos(Convert.ToDouble(input)));