Gibt es beispielsweise einen Operator, der dies handhabt?
float Result, Number1, Number2;
Number1 = 2;
Number2 = 2;
Result = Number1 (operator) Number2;
In der Vergangenheit ^
hat der Operator in anderen Sprachen als Exponentialoperator gedient, in C # ist er jedoch ein bitweiser Operator.
Muss ich eine Schleife schreiben oder einen anderen Namespace einfügen, um exponentielle Operationen zu verarbeiten? Wenn ja, wie gehe ich mit Exponentialoperationen mit Nicht-Ganzzahlen um?
c#
operators
arithmetic-expressions
exponent
Charlie
quelle
quelle
**
als Infix-Exponentiationsoperator verwendet.Antworten:
Die C # -Sprache hat keinen Energieoperator . Das .NET Framework bietet jedoch die Math.Pow- Methode:
Ihr Beispiel würde also so aussehen:
quelle
Ich bin über diesen Beitrag gestolpert, um die wissenschaftliche Notation in meinem Code zu verwenden, den ich verwendet habe
Aber danach habe ich herausgefunden, dass du es kannst
Ich dachte nur, ich würde dies für jeden in einer ähnlichen Situation hinzufügen, in der ich mich befand.
quelle
Auf MSDN gibt es einen Blog-Beitrag darüber, warum es im C # -Team KEINEN Exponentenoperator gibt .
Du hast gefragt:
Math.Pow unterstützt doppelte Parameter, sodass Sie keine eigenen schreiben müssen.
quelle
Das Fehlen eines Exponentialoperators für C # war für uns ein großes Ärgernis, als wir nach einer neuen Sprache suchten, in die wir unsere Berechnungssoftware vom guten alten vb6 konvertieren konnten.
Ich bin froh, dass wir uns für C # entschieden haben, aber es nervt mich immer noch, wenn ich eine komplexe Gleichung mit Exponenten schreibe. Die Math.Pow () -Methode macht es ziemlich schwierig, Gleichungen IMO zu lesen.
Unsere Lösung bestand darin, eine spezielle DoubleX-Klasse zu erstellen, in der wir den ^ -Operator überschreiben (siehe unten).
Dies funktioniert ziemlich gut, solange Sie mindestens eine der Variablen als DoubleX deklarieren:
oder verwenden Sie einen expliziten Konverter für Standard-Doubles:
Ein Problem bei dieser Methode ist jedoch, dass der Exponent im Vergleich zu anderen Operatoren in der falschen Reihenfolge berechnet wird. Dies kann vermieden werden, indem immer ein zusätzliches () um die Operation gesetzt wird, was das Lesen der Gleichungen wiederum etwas erschwert:
Ich hoffe, dass dies anderen helfen kann, die viele komplexe Gleichungen in ihrem Code verwenden, und vielleicht hat sogar jemand eine Idee, wie diese Methode verbessert werden kann?! :-)
DoubleX-Klasse:
quelle
Ich bin überrascht, dass dies niemand erwähnt hat, aber für den einfachen (und wahrscheinlich am häufigsten anzutreffenden) Fall des Quadrierens multiplizieren Sie einfach mit sich selbst.
quelle
Math.Pow
. Ich habe nur eine offensichtliche Lösung für den häufigsten Fall angeboten.Math.Pow(Number1, 2)
Da noch niemand eine Funktion geschrieben hat, um dies mit zwei ganzen Zahlen zu tun, gibt es eine Möglichkeit:
Alternativ in VB.NET:
quelle
Eine gute Powerfunktion wäre
Die Funktion "Math.Pow" verwendet die Prozessorleistungsfunktion und ist sehr effizient.
quelle
Für das, was es wert ist, vermisse ich den Operator ^, wenn ich eine Potenz von 2 erhöhe, um eine binäre Konstante zu definieren. Math.Pow () kann dort nicht verwendet werden, aber das Verschieben eines vorzeichenlosen int von 1 um den Wert des Exponenten nach links funktioniert. Als ich eine Konstante von (2 ^ 24) -1 definieren musste:
Denken Sie daran, dass die Typen (uint) << (int) sein müssen.
quelle