Bearbeiten von Ganzzahlen und Gleitkommazahlen
Dieses interaktive Tutorial erläutert die numerischen Typen in C#, wobei Ihr Browser verwendet wird. Sie schreiben C#-Code und sehen die Ergebnisse der Kompilierung und Ausführung Ihres Codes. Es enthält eine Reihe von Lektionen, in denen Zahlen und arithmetische Operationen in C# untersucht werden. In diesen Lektionen lernen Sie die Grundlagen der Programmiersprache C# kennen.
Tipp
Verwenden Sie die Tastenkombination (STRG + v oder BEFEHL + v), um einen Codeschnipsel im Fokusmodus einzufügen.
Erkunden von arithmetischen Operationen mit ganzen Zahlen
Führen Sie den folgenden Code im interaktiven Fenster aus. Wählen Sie die Schaltfläche Enter focus mode (Fokusmodus aktivieren) aus. Geben Sie anschließend den folgenden Codeblock in das interaktive Fenster ein, und wählen Sie Ausführen aus:
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Wenn Sie an Ihrer Umgebung arbeiten, sollten Sie stattdessen die Anleitungen für die lokale Version befolgen.
Sie haben eine der grundlegenden arithmetischen Operationen mit ganzen Zahlen kennengelernt. Der int
-Typ steht für integer, d.h. eine positive oder negative ganze Zahl. Sie verwenden zum Addieren das +
-Symbol. Zu den anderen häufig verwendeten arithmetischen Operationen für ganze Zahlen zählen Folgende:
-
zur Subtraktion*
zur Multiplikation/
zur Division
Tipp
Im Rahmen dieses interaktiven Tutorials können Sie sich selbst mit dieser Operationen vertraut machen, indem Sie den Code, den Sie in das interaktive Fenster geschrieben haben, ändern. Dieses Tutorial stellt bei jedem Schritt Beispiele zur Verfügung, die Sie testen können.
Erkunden Sie zunächst die anderen Operationen. Ändern Sie die dritte Zeile, um die einzelnen Operationen zu testen. Wählen Sie nach jeder Änderung die Schaltfläche Ausführen aus.
Subtraktion:
int c = a - b;
Multiplikation:
int c = a * b;
Division:
int c = a / b;
Wenn Sie möchten, können Sie auch experimentieren, indem Sie mehrere arithmetische Operationen in dieselbe Zeile schreiben.
Tipp
Bei Ihren ersten Schritten mit C# (oder einer anderen Programmiersprache) kann es zu Fehlern kommen, wenn Sie Codes schreiben. Der Compiler findet diese Fehler und meldet diese. Sollte die Ausgabe Fehlermeldungen enthalten, sehen Sie sich den Beispielcode und den Code im interaktiven Fenster an, um festzustellen, was behoben werden muss. Durch diese Übung lernen Sie die Struktur eines C#-Codes kennen.
Erkunden der Reihenfolge der Operationen
Die Programmiersprache C# definiert anhand von Regeln, die Sie aus der Mathematik kennen, die Rangfolge verschiedener arithmetischer Operationen. Multiplikation und Division haben gegenüber der Addition und Subtraktion Vorrang. Erkunden Sie dies, indem Sie den folgenden Code im interaktiven Fenster ausführen:
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
Die Ausgabe zeigt, dass vor der Addition die Multiplikation ausgeführt wurde.
Sie können eine andere Operationsreihenfolge erzwingen, indem Sie die Operation bzw. die Operationen, die zuerst ausgeführt werden soll bzw. sollen, mit Klammern umschließen:
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
Machen Sie sich damit vertraut, indem Sie viele verschiedene Operationen kombinieren. Ersetzen Sie die vierte Zeile oben durch eine Zeile wie etwa Folgende:
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Vielleicht haben Sie bereits ein interessantes Verhalten bei den ganzen Zahlen bemerkt. Bei der Division ganzer Zahlen kommt immer ein ganzzahliges Ergebnis heraus, selbst wenn Sie als Ergebnis einen Dezimal- oder Bruchteil erwarten würden.
Wenn Sie dieses Verhalten noch nicht beobachtet haben, testen Sie den folgenden Code:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Wählen Sie erneut Ausführen aus, um die Ergebnisse anzuzeigen.
Erkunden der Genauigkeit und Grenzwerte ganzer Zahlen
Im vorherigen Beispiel haben Sie gesehen, dass das Ergebnis bei der Division ganzer Zahlen abgeschnitten wird.
Sie erhalten den Restwert mithilfe des remainder-Operators, dem %
-Zeichen:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");
Der integer-C#-Typ unterscheidet sich noch in einem weiteren Punkt von einer mathematischen ganzen Zahl: Der int
-Typ ist mit minimalen und maximalen Grenzwerten versehen. Führen Sie den folgenden Code im interaktiven Fenster aus, um diese Grenzwerte anzuzeigen:
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Wenn bei einer Berechnung ein Wert herauskommt, der diese Grenzwerte überschreitet, liegt eine Unterlauf- oder Überlaufbedingung vor. Die Antwort gibt dann den Bereich der Grenzwerte an. Fügen Sie im interaktiven Fenster die folgenden beiden Zeilen hinzu, um ein Beispiel anzuzeigen:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Beachten Sie, dass die Antwort sehr nah an der minimalen (negativen) ganzen Zahl liegt. Sie entspricht min + 2
.
Die Additionsoperation hat die zulässigen Werte für ganze Zahlen überlaufen.
Die Antwort enthält eine sehr große negative Zahl, da ein Überlauf den größtmöglichen ganzzahligen Wert bis zum kleinstmöglichen Wert umschließt.
Wenn der int
-Typ nicht Ihren Anforderungen entspricht, so gibt es verschiedene numerische Typen mit anderen Grenzwerten und Genauigkeitsgraden, die Sie verwenden können. Werfen wir im Folgenden einen Blick auf diese Typen von Zahlen.
Arbeiten mit dem Double-Typ
Der numerische Typ double
stellt eine Gleitkommazahl mit doppelter Genauigkeit dar. Falls Ihnen diese Benennungen nichts sagen, beachten Sie die folgenden Erläuterungen: Eine Gleitkommazahl wird verwendet, um sehr große oder sehr kleine Zahlen, die keine ganzen Zahlen sind, darzustellen. Doppelte Genauigkeit ist ein relativer Begriff, der die Anzahl der binären Ziffern beschreibt, die zum Speichern des Werts verwendet werden. Zahlen mit doppelter Genauigkeit besitzen die doppelte Anzahl von binären Ziffern wie Zahlen mit einfacher Genauigkeit. Bei modernen Computern werden häufiger Zahlen mit doppelter Genauigkeit verwendet statt mit einfacher Genauigkeit. Zahlen mit einfacher Genauigkeit werden mit dem Schlüsselwort float
deklariert.
Sehen wir uns dies einmal genauer an. Testen Sie den folgenden Code im interaktiven Fenster, und sehen Sie sich das Ergebnis an:
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Beachten Sie, dass die Antwort die Dezimalzahl des Quotienten enthält. Testen Sie einen etwas komplizierteren Ausdruck mit Werten vom Typ „double“:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
Der Bereich eines Werts vom Typ „double“ ist weitaus größer als bei ganzzahligen Werten. Testen Sie den folgenden Code im interaktiven Fenster:
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
Diese Werte werden in der wissenschaftlichen Schreibweise ausgegeben. Die Zahl links von E
ist die Mantisse. Die Zahl rechts ist der Exponent als Potenz von 10.
Wie bei Dezimalzahlen in der Mathematik können double-Werte in C# Rundungsfehler aufweisen. Testen Sie den folgenden Code:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Denken Sie daran, dass 0.3
gleich 3/10
ist und nicht exakt 1/3
entspricht. Auf ähnliche Weise ist 0.33
gleich 33/100
. Das ist näher an 1/3
, aber immer noch nicht exakt.
Übung
Testen Sie für den double
-Typ andere Berechnungen mit großen und kleinen Zahlen sowie mit Multiplikation und Division. Testen Sie kompliziertere Berechnungen.
Arbeiten mit Dezimaltypen
Sie haben die grundlegenden numerischen Typen in C# – „integer“ und „double“ – kennengelernt. Es gibt einen weiteren Typ, den Sie kennen sollten: den decimal
-Typ. Der decimal
-Typ weist einen kleineren Bereich als double
auf, aber eine höhere Genauigkeit. Sehen wir uns das einmal genauer an:
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Beachten Sie, dass der Bereich kleiner ist als beim double
-Typ. Sie können sehen, dass die Genauigkeit beim Typ „decimal“ höher ist, wenn Sie den folgenden Code testen:
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Beachten Sie, dass der aus dieser arithmetischen Operation resultierende Wert vom Typ „decimal“ rechts neben dem Dezimalpunkt mehr Ziffern enthält.
Mit dem Suffix M
neben einer Zahl geben Sie an, dass eine Konstante den decimal
-Typ verwenden soll. Andernfalls nimmt der Compiler den Typ double
an.
Hinweis
Der Buchstabe M
wurde als visuell eindeutigster Buchstabe zur Unterscheidung zwischen den Schlüsselwörtern double
und decimal
ausgewählt.
Übung
Nachdem Sie nun die verschiedenen numerischen Typen kennengelernt haben, schreiben Sie Code, der den Flächeninhalt eines Kreises mit einem Radius von 2,5 cm berechnet. Denken Sie daran, dass der Flächeninhalt eines Kreises durch das Quadrat des Radius multipliziert mit Pi gebildet wird. Hinweis: .NET bietet eine Konstante für Pi (Math.PI), die Sie für die Berechnung dieses Werts verwenden können. Math.PI, wie alle im System.Math
-Namespace deklarierten Konstanten, ist ein double
-Wert. Aus diesem Grund sollten Sie double
anstelle von decimal
-Werten für diese Aufgabe verwenden.
Sie sollten eine Antwort zwischen 19 und 20 erhalten.
Übung abgeschlossen
Sieht ihr Code ungefähr wie der Folgende aus?
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
Wenn Sie möchten, testen Sie andere Formeln.
Herzlichen Glückwunsch!
Sie haben das interaktive Tutorial „Zahlen in C#“ abgeschlossen. Klicken Sie unten auf den Link Branches und Loops, um das nächste interaktive Tutorial zu starten, oder besuchen sie die .NET-Website, um das .NET SDK herunterzuladen, ein Projekt auf Ihrem Computer zu erstellen und mit dem Programmieren fortzufahren. Über den Abschnitt „Nächste Schritte“ gelangen Sie wieder zu diesen Tutorials.
Weitere Informationen zu Zahlen in C# finden Sie auch in folgenden Artikeln:
Liegt ein Problem mit diesem Abschnitt vor? Wenn ja, senden Sie uns Feedback, damit wir den Abschnitt verbessern können.