Zahlenformate

Ohne Zahlen läuft nichts. Ob nun in reiner Mathematik oder beim Programmieren. Je nach Zweck kann sich das Format und die Schreibweise von Zahlen jedoch unterscheiden. Wird einmal nur mit Zahlen gerechnet, bei denen ein eindeutiger Fokus auf der Basis 16 oder 256 liegt, ist oftmals ein anderes Format vorteilhaft, als bei sonstigen Berechnungen, der Involvierung von Kommazahlen oder gar einem Umgang mit Daten in der Größenordnung einzelner Bits.

Ganz- und Kommazahlen

Klassisch werden Kommazahlen in der deutschen Sprache mit einem Komma (",") in Vor- und Nachstellen aufgeteilt, dies ist jedoch in DestinyScript, so wie in jeder anderen Script- oder Programmiersprache auch, nicht der Fall. Stattdessen wird wie auf englisch üblich ein Punkt (".") verwendet.

In den Kommentaren der nachfolgenden Beispielzeilen, sowie auf allen weiteren dieser Art auf dieser Seite, wird angegeben, was als Ergebnis gespeichert wird. Wie bereits auf der Seite "Datentypen" erklärt, werden Zahlen untereinander automatisch ins richtige Format gewandelt.

$
d[1] = 1234567;   // 1234567
d[2] = 1234.567;  // 1234
f[1] = 1234567;   // 1234567.0
f[2] = 1234.567;  // 1234.567

Kommazahlen, bzw. Floats, können theoretisch als Ersatz für Ganzzahlen herhalten, die den Wertebereich von Dwords überschreiten, da sie bis zu 15 Ziffern enthalten und in besonderen Fällen sogar nochmal deutlich größer ausfallen können. Dies geschieht jedoch genau wie beim Nutzen vieler Nachkommastellen auf Kosten der Wertgenauigkeit (weiter unten mehr dazu), die damit erreicht werden kann. Dies sind keine Eigenheiten von Destiny, sie werden von der Prozessorarchitektur so vorgegebenen.

$
d[1] = 3000000000; // Fehlermeldung, da zu groß.
f[1] = 3000000000; // 3000000000.0 (größer als 2147483647)
f[2] = 3.0E+20;    // 300000000000000000000.0 (3 mit 20 Vorkommanullen)

Zahlen-Genauigkeit

Computer können nicht mit Zahlen im Dezimalsystem (0~9), sondern ausschließlich mit Bits (0~1, "Binärsystem" genannt) rechnen. Sieht eine Zahl für einen Menschen recht einfach und gewöhnlich aus, kann sie für einen Computer äußerst kompliziert sein, die Kommazahl 0,1 (1/10) etwa ist für ihn durch die Lücken in der Präzision, die ein 32bit-Prozessor abbilden kann, identisch mit 0,0999999999999998 (ein, soweit es Floats zulassen, periodischer Bruch).

Rechnen mit mehreren Typen

Je nachdem, ob Ganz- und/oder Kommazahlen in einer Berechnung vorkommen, werden die einzelnen Bestandteile dieser verschieden behandelt.

$
// f[1] ist zwar ein Float, erhält jedoch das Ergebnis einer Dword-Division.
f[1] = 7 / 2;     // 3   // Das Ergebnis wird automatisch zu 3.0.

// f[2] erhält das Ergebnis einer Division, in der ein Float vorkommt.
f[2] = 7 / 2.0;   // 3.5 // Die 7 wird temporär automatisch zu 7.0.

// f[3] erhält das Ergebnis einer reinen Float-Division.
f[3] = 7.0 / 2.0; // 3.5 // Keine automatischen Anpassungen nötig.

// d[1] erhält das Ergebnis einer Float-Division, ist jedoch ein Dword.
d[1] = 7.0 / 2.0; // 3.5 // Das Ergebnis wird automatisch zu 3.

Zahlensysteme

Ganzzahlen (keine Kommazahlen) können auf verschiedene Weisen geschrieben werden. Während Menschen, da sie i.d.R. zehn Finger aufweisen, mit 10 Ziffern zu rechnen lernen und sich mit anderen Systemen schwertun, kann einem Computer vergleichsweise einfach beigebracht werden, jede beliebige Anzahl an möglichen Ziffern, die ihm vorgesetzt wird, in das für ihn verständiche Binärformat zu übersetzen. DestinyScript bietet die in der nachfolgenden Tabelle aufgeführten Möglichkeiten, Zahlen zu schreiben.

Basis Ziffern Schreibweise Beispiel Dezimal
Binär 2 0 1 2 3 4 5 6 7 8 9 A B C D E F 0b?* 0b11011010 218
Oktal 8 0 1 2 3 4 5 6 7 8 9 A B C D E F 0o?* 0o732 472
Dezimal 10 0 1 2 3 4 5 6 7 8 9 A B C D E F ?* 1337 1337
Hex 16 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x?* 0xF3AB 62379