CodeGym /Kurse /C# SELF /Zahlen und Zeichen in C#

Zahlen und Zeichen in C#

C# SELF
Level 6 , Lektion 1
Verfügbar

1. Welche Zahlen gibt es?

Beim Programmieren arbeiten wir ständig mit Zahlen – vom Alter eines Users bis zur Anzahl der Sterne in der Galaxie oder Cent auf dem Bankkonto. Aber verschiedene Aufgaben brauchen verschiedene Arten von Zahlen: Manchmal reicht es, nur ganze Zahlen zu speichern, manchmal braucht man sehr genaue Brüche und manchmal sind nur "positive Zahlen" erlaubt.

Ganze Zahlen (int und andere)

Eine ganze Zahl ist eine Zahl ohne Nachkommastellen.
In C# benutzt man meistens den Typ int, aber es gibt noch ein paar andere Varianten, die sich in Größe und Wertebereich unterscheiden.

  • int – der Standard-"Arbeitstyp" für ganze Zahlen. Er kann ziemlich große (und kleine) Werte speichern und braucht nicht viel Speicher.
    Zum Beispiel für Like-Zähler, Alter, Anzahl der Tage im Jahr wird fast immer int verwendet.
  • long – wird genutzt, wenn die Werte sehr groß werden können (z.B. Milliarden oder Billionen).
    Beispiel: Die Summe aller YouTube-Views in der Geschichte speichern.
  • short – ein sparsamer, aber selten genutzter Typ. Passt da, wo viele kleine Werte vorkommen (z.B. Audiodaten, Farbkomponenten).
  • byte – für noch kleinere Werte, besonders in Grafik und beim Arbeiten mit Dateien, wo Speicherplatz wichtig ist.

Gebrochene Zahlen (double, float, decimal)

Manchmal muss man mit Zahlen arbeiten, die eine Nachkommastelle haben. Zum Beispiel Lufttemperatur, Notendurchschnitt eines Studenten, Preis eines Produkts mit Cent.

  • double – das ist der "Standardtyp" für gebrochene Zahlen. Genau genug für die meisten Berechnungen (Beispiel: 3.1415926535…).
  • float – ein leichterer und weniger genauer Typ, kommt oft in Grafikaufgaben oder bei großen Datenmengen vor, wo Speicher gespart werden muss.
  • decimal – gedacht für Finanz- und Buchhaltungsaufgaben, wenn Genauigkeit bis auf den Cent wichtig ist, damit keine "Verluste" durch die Art der Speicherung entstehen. Zum Beispiel für Kontostand, Produktpreis, Wechselkurs.

Spezielle Zahlentypen

In C# gibt es zusätzliche Zahlentypen für besondere Fälle:

  • uint, ulong, ushort – "vorzeichenlose" Typen, erlauben nur positive Werte, dafür ist der Wertebereich doppelt so groß wie bei ihren "vorzeichenbehafteten" Pendants.
  • sbyte – kleiner, vorzeichenbehafteter Typ (für kompaktes Speichern von negativen und positiven Werten von -128 bis 127).
  • BigInteger – wenn du mit riesigen Zahlen arbeiten musst, die die Standardbereiche übersteigen, z.B. in Kryptographie oder Astronomie-Berechnungen.

2. Vorzeichenbehaftete und vorzeichenlose Zahlen

Vorzeichenbehafteter Typ kann sowohl positive als auch negative Zahlen speichern. Das ist praktisch, wenn Werte "über und unter Null" sein können: z.B. Temperatur, Kontostand, Höhe über dem Meeresspiegel.

Vorzeichenloser Typ – nur Null und positive Zahlen. Passt, wenn es kein Minus geben kann – z.B. Anzahl der Leute im Raum, Bytes in einer Datei, Zeit.

Beispiel:

  • int (vorzeichenbehaftet): -10, 0, 50
  • uint (vorzeichenlos): 0, 10, 1000

Mit einem vorzeichenlosen Typ kannst du in einer Variable den doppelten Maximalwert speichern (weil es keine "negative Hälfte" des Bereichs gibt). Sie werden verwendet, wenn klar ist, dass der Wert nie negativ sein kann.

Vorzeichenbehaftete Ganzzahltypen

Typ Größe Wertebereich Beispiel für Verwendung
sbyte
1 Byte -128 bis 127 -128, 0, 127
short
2 Bytes -32 768 bis 32 767 -1000, 0, 32000
int
4 Bytes -2 147 483 648 bis 2 147 483 647 -1000000, 0, 2000000
long
8 Bytes -9 223 372 036 854 775 808
bis 9 223 372 036 854 775 807
-10_000_000_000, 1

Vorzeichenlose Ganzzahltypen

Typ Größe Wertebereich Beispiel für Verwendung
byte
1 Byte 0 bis 255 0, 128, 255
ushort
2 Bytes 0 bis 65 535 1000, 65000
uint
4 Bytes 0 bis 4 294 967 295 100, 4000000000
ulong
8 Bytes 0 bis 18 446 744 073 709 551 615 1, 18_000_000_000_000

Gebrochene Typen

Typ Größe Beispielwerte Beschreibung
float
4 Bytes 3.14f, -0.001f einfache Genauigkeit (7 Stellen)
double
8 Bytes 3.1415, -1.7E+308 doppelte Genauigkeit (15-16 Stellen)
decimal
16 Bytes 0.1m, 12345.6789m hohe Genauigkeit für Finanzen

3. Suffixe für Zahlen

In manchen Situationen musst du explizit angeben, welchen Typ du für eine Zahl verwenden willst. Das geht mit Suffixen:

  • L oder l – für den Typ long (z.B. 10000000000L)
  • U oder u – für den Typ uint (z.B. 123U)
  • F oder f – für den Typ float (z.B. 3.14f)
  • D oder d – für den Typ double (meist nicht nötig, weil gebrochene Zahlen ohne Suffix double sind)
  • M oder m – für den Typ decimal (z.B. 99.99m – besonders wichtig bei Geld!)

Wenn du kein Suffix angibst, gilt standardmäßig: Ganze Zahl ist int, gebrochene Zahl ist double. Zum Beispiel ist 42 ein int, und 3.14 ein double.

Wozu braucht man das? Zum Beispiel, um keinen Fehler zu bekommen, wenn du einer long-Variable eine große Zahl zuweist:


long bigNumber = 9000000000L; // wenn du das L weglässt, gibt's einen Compilerfehler

Und für Geld solltest du immer decimal mit dem Suffix m verwenden:


decimal price = 999.99m;

4. Trenner als Unterstrich _

Bei langen Zahlen kann man sich leicht in den Nullen vertun. Für bessere Lesbarkeit kannst du in C# Unterstriche innerhalb der Zahl verwenden.


int population = 146_700_000;
long stars = 100_000_000_000L;
Unterstriche für bessere Lesbarkeit von Zahlen verwenden

Das ist absolut legal: Der Compiler ignoriert die Unterstriche, und du siehst auf einen Blick die Stellen. Wichtig: Kein Unterstrich am Anfang, am Ende, nach dem Punkt oder vor dem Suffix.

5. Zeichentyp char

Manchmal musst du im Programm nicht mit Zahlen, sondern mit einzelnen Zeichen arbeiten: Buchstaben, Ziffern, Symbolen oder sogar Leerzeichen. Dafür gibt es den speziellen Typ – char.

Was ist char?
Das ist eine Variable, die ein einzelnes Zeichen speichert:

  • lateinischen oder kyrillischen Buchstaben ('A', 'я')
  • Ziffer ('5')
  • Sonderzeichen ('#', '%', '@')
  • Steuerzeichen ('\\n' – Zeilenumbruch)

Besonderheiten:

  • Der Wert vom Typ char wird in einfachen Anführungszeichen geschrieben: char letter = 'B';
  • Eigentlich wird im char der Zahlenwert des Zeichens (im Unicode-System) gespeichert, deshalb kannst du char vergleichen, in int umwandeln und sogar einfache Rechnungen machen:

char a = 'A';
char b = (char)(a + 1); // 'B'
int code = a;           // 65 — Code vom Buchstaben 'A'

Du kannst auch spezielle Zeichen verwenden, zum Beispiel: char tab = '\\t'; // Tabulatorzeichen

Wozu braucht man char?
Um mit Text zeichenweise zu arbeiten (z.B. den ersten Buchstaben in einem String prüfen, Satzzeichen suchen, Passwort zeichenweise einlesen).

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION