Kapitel 2: Grundlagen / 2.7 Literale für Zahlen

Literale sind die Zeichenfolgen, mit denen fest verdrahtete Werte im Quellcode beschrieben werden, zum Beispiel true, 25 oder „Hallo Welt“. Da in der generellen Programmierung sehr viele Zahlenformate existieren, bietet auch Swift viele verschiedene Literale für Zahlen:

Einen Integer können Sie in vier verschiedenen Zahlensytemen aufschreiben:

  • Im Dezimalsystem ohne Präfix,
  • im Binärsystem mit dem Präfix 0b,
  • im Oktalsystem mit dem Präfix 0o und
  • im Hexadezimalsystem mit dem Präfix 0x.

Zur Erklärung: Ein Präfix sind vorangestellte Zeichen (ein Postfix sind hinten angefügte Zeichen), das Hexadezimalsystem wurde ja bereits bei den Gleitkommazahlen besprochen und stellt ein Zahlensystem mit 16 Ziffern dar, auch das Binärsystem mit seinen zwei Ziffern 0 und 1 ist bereits bekannt, bleibt noch das Oktalsystem mit 8 Ziffern, das im Gegensatz zu den anderen in der heutigen Programmierung aber kaum noch von praktischer Bedeutung ist.

Im folgenden Beispiel haben alle Integer-Konstanten den dezimalen Wert 17:

let dezimal = 17        // 17 in dezimaler Schreibweise
let binär = 0b10001     // 17 in binärer Schreibweise
let oktal = 0o21        // 17 in oktaler Schreibweise
let hexadezimal = 0x11  // 17 in hexadezimaler Schreibweise

Für Gleitkommazahlen haben Sie im gleichnamigen Kapitel die Exponentialschreibweise ja bereits kennengelernt: Die Zahl 0,0125 hat beispielsweise das Literal 1.25e-2 als Swiftversion von 1,25 • 10−2. Es handelt sich hierbei um die dezimale Exponentialschreibweise. Verwenden können Sie aber auch die hexadezimale Exponentialschreibweise:

Hierbei wird statt eines e ein p verwendet, die Zahl vor dem p ist hexadezimal und in der Auswertung wird der Exponent zur Basis 2 berechnet und nicht zur Basis 10; zum Beispiel stellt das Literal 0xFp2 die dezimale Zahl 60 dar, da F (hexadezimal) = 15 (dezimal) und 15 • 22 = 15 • 4 = 60.

In folgenden Beispielcode haben alle Double-Konstanten den dezimalen Wert 12.1875 (die Star Wars Anspielung ist übrigens aus der Apple Dokumentation übernommen):

let dezimal = 12.1875
let deziExponent = 1.21875e1
let hexadeziExponent = 0xC.3p0

Sowohl Integer wie Gleitkommazahlen können zur besseren Lesbarkeit Nullen vorangestellt und es können Unterstriche _ als Tausendertrennzeichen verwendet werden. Beides hat keinen Einfluss auf den Zahlenwert des Literals:

let vorangestellteNullen = 000123.456
let eineMillion = 1_000_000
let etwasÜberEineMillion = 1_000_000.000_000_1
Kapitel 2.7: Literale für Zahlen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.