Übung: Ausführen mathematischer Operationen
Sie kennen nun die Grundlagen der Addition und – noch wichtiger – die der impliziten Typkonvertierung zwischen numerischen Datentypen und Datentypen für Zeichenfolgen. Nun lernen Sie weitere mathematische Operationen kennen, die häufig auf numerische Daten angewandt werden.
Ausführen grundlegender mathematischer Operationen
Schreiben von Code, um Additionen, Subtraktionen, Multiplikationen und Divisionen mit Integern auszuführen
Wählen Sie den gesamten Code im .NET-Editor aus, und drücken Sie dann ENTF oder die RÜCKTASTE, um den Code zu löschen.
Geben Sie im .NET-Editor den folgenden Code ein:
int sum = 7 + 5; int difference = 7 - 5; int product = 7 * 5; int quotient = 7 / 5; Console.WriteLine("Sum: " + sum); Console.WriteLine("Difference: " + difference); Console.WriteLine("Product: " + product); Console.WriteLine("Quotient: " + quotient);
Führen Sie den Code aus. Die folgende Ausgabe wird angezeigt:
Sum: 12 Difference: 2 Product: 35 Quotient: 1
Offensichtlich gilt also Folgendes:
+
ist der Additionsoperator.-
ist der Subtraktionsoperator.*
ist der Multiplikationsoperator./
ist der Divisionsoperator.
Der Quotient im Divisionsbeispiel entspricht jedoch möglicherweise nicht Ihren Erwartungen. Die Nachkommastellen von quotient
wurden abgeschnitten, da der Datentyp dieser Variable int
ist, und es bei int
-Werten keine Nachkommastellen gibt.
Hinzufügen von Code, um dezimale Literalwerte zu dividieren
Damit die Division wie erwartet durchgeführt wird, müssen Sie einen Datentyp wie decimal
verwenden, der Nachkommastellen unterstützt.
Löschen Sie den Code aus den vorherigen Schritten, und geben Sie den folgenden Code in den .NET-Editor ein:
decimal decimalQuotient = 7.0m / 5; Console.WriteLine($"Decimal quotient: {decimalQuotient}");
Führen Sie den Code aus. Die folgende Ausgabe wird angezeigt:
Decimal quotient: 1.4
Damit dies funktioniert, muss der Quotient (links vom Zuweisungsoperator) vom Typ decimal
sein und mindestens eine der dividierten Zahlen muss ebenfalls vom Typ decimal
sein (beide Zahlen können auch ein decimal
-Typ sein).
Die folgenden beiden Beispiele können problemlos ausgeführt werden:
decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;
Die folgenden Codezeilen sind jedoch nicht gültig (oder führen zu ungenauen Ergebnissen):
int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;
Hinzufügen von Code zum Umwandeln von Ergebnissen einer ganzzahligen Division
Was geschieht, wenn Sie nicht mit Literalwerten arbeiten? Anders ausgedrückt: Was passiert, wenn Sie zwei Variablen des Typs int
dividieren müssen, die Nachkommastellen jedoch erhalten bleiben sollen? In diesem Fall müssen Sie den Datentyp int
in decimal
umwandeln. Die Umwandlung ist eine Art der Datenkonvertierung, bei der der Compiler angewiesen wird, einen Wert temporär so zu behandeln, als ob es sich um einen anderen Datentyp handeln würde.
Wenn Sie int
in decimal
umwandeln möchten, müssen Sie dem Wert den Umwandlungsoperator voranstellen. Sie geben dazu vor dem Wert den in Klammern eingeschlossenen Namen des Datentyps an. In diesem Fall fügen Sie (decimal)
vor den Variablen first
und second
hinzu.
Löschen Sie den Code aus den vorherigen Schritten, und geben Sie den folgenden Code in den .NET-Editor ein:
int first = 7; int second = 5; decimal quotient = (decimal)first / (decimal)second; Console.WriteLine(quotient);
Führen Sie den Code aus. Die folgende Ausgabe wird angezeigt:
1.4
Hinweis
Sie kennen nun drei Verwendungsmöglichkeiten des Klammeroperators: den Methodenaufruf, die Festlegung der Reihenfolge von Operationen und die Umwandlung von Datentypen.
Schreiben von Code, um bei einer Division von Integern den Rest zu ermitteln
Mit dem Modulooperator %
können Sie den Rest einer int
-Division bestimmen. So können Sie feststellen, ob eine Zahl durch eine andere Zahl geteilt werden kann. Dies kann sinnvoll sein, wenn Hunderte oder Tausende von Datensätzen in einer Schleife über einen längeren Zeitraum verarbeitet werden und Sie dem Endbenutzer jeweils nach 100 Datensätzen den aktuellen Verarbeitungsstand anzeigen möchten.
Löschen Sie den Code aus den vorherigen Schritten, und geben Sie den folgenden Code in den .NET-Editor ein:
Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}"); Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
Führen Sie den Code aus. Die folgende Ausgabe wird angezeigt:
Modulus of 200 / 5 : 0 Modulus of 7 / 5 : 2
Wenn der Rest 0 ist, kann der Dividend durch den Divisor geteilt werden.
Reihenfolge der Vorgänge
Wie Sie in der vorherigen Übung gelernt haben, können Sie die Klammern ()
als Operatoren nutzen, um die Reihenfolge von Operationen festzulegen. Diese Reihenfolge wird aber noch auch auf andere Weise bestimmt.
Für die Reihenfolge der Operationen gelten die üblichen Regeln der Mathematik. in der folgenden Reihenfolge ausgeführt:
- Klammern (Ausdrücke in der Klammer werden zuerst verarbeitet)
- Exponenten
- Multiplikation und Division (von links nach rechts)
- Addition und Subtraktion (von links nach rechts)
C# berücksichtigt diese Reihenfolge mit Ausnahme der Exponenten. In C# gibt es keinen Operator für Exponenten. Sie können jedoch die System.Math.Pow-Methode verwenden. Im Modul „Aufrufen von Methoden aus der .NET-Klassenbibliothek in C#“ werden diese und weitere Methoden vorgestellt.
Schreiben von Code, der Operationen in unterschiedlicher Reihenfolge entsprechend den C#-Regeln ausführt
Löschen Sie den Code aus den vorherigen Schritten, und geben Sie den folgenden Code in den .NET-Editor ein:
int value1 = 3 + 4 * 5; int value2 = (3 + 4) * 5; Console.WriteLine(value1); Console.WriteLine(value2);
Die gleichen Operationen werden hier in unterschiedlicher Reihenfolge ausgeführt.
Führen Sie den Code aus. Die folgende Ausgabe wird angezeigt:
23 35
Zusammenfassung
Hier sehen Sie, was Sie bisher über mathematische Operationen in C# gelernt haben:
- Verwenden Sie für grundlegende mathematische Operationen die Operatoren
+
,-
,*
und/
. - Die Division zweier
int
-Werte führt dazu, dass alle Nachkommastellen entfernt werden. Wenn Sie die Nachkommastellen beibehalten möchten, müssen Sie den Zähler (Divisor) oder Nenner (Dividend) (oder auch beide) zuerst vonint
in eine Gleitkommazahl wiedecimal
umwandeln. Außerdem muss der Quotient denselben Gleitkommazahlentyp aufweisen, um ein Abschneiden zu vermeiden. - Führen Sie eine Umwandlungsoperation durch, um einen Wert temporär so zu behandeln, als würde es sich um einen anderen Datentyp handeln.
- Verwenden Sie den
%
-Operator, um den Rest einer der Division zu erfassen. - Für die Reihenfolge der Operationen gelten die üblichen Regeln der Mathematik.