Verse verwendet float als Typ zum Speichern und Verarbeiten von Fließkommazahlen wie 1,0, -50,5 und 3,14159.
Ein Float in Verse ist ein IEEE 64-Bit-Float, das heißt, er kann eine positive oder negative Zahl mit einem Dezimalpunkt im Bereich [-2^1024 + 1, ... , 0, ... , 2^1024 - 1] enthalten oder den Wert NaN (Not a Number) haben.
Die Implementierung für Float unterscheidet sich in den folgenden Punkten vom IEEE-Standard:
- Es gibt nur einen
NaN-Wert. NaNist gleich sich selbst.- Jede Zahl ist gleich sich selbst. Wenn zwei Zahlen gleich sind, dann kann kein reiner Verse-Code den Unterschied zwischen ihnen feststellen.
0kann nicht negativ sein.
Du kannst vordefinierte Float-Werte als Float-Literale in deinen Code einbinden. Ein Float-Literal ist eine Fließkommazahl in deinem Code.
Das folgende Beispiel zeigt, wie du eine Float-Variable mit dem Namen MaxHealth erstellst, initialisiert mit der Float-Literale 100,0:
MaxHealth : float = 100.0
Float-Operationen
Floats unterstützen mathematische Operationen und Vergleiche mit anderen Floats.
Mathematik
Du kannst die vier grundlegenden Rechenoperationen mit Floats in Verse durchführen: + für Addition, - für Subtraktion, * für Multiplikation und / für Division.
Es gibt auch kombinierte Operatoren für die grundlegenden mathematischen Operationen (Addition, Subtraktion, Multiplikation und Division) und zum Aktualisieren des dereferenzierten Wertes eines Zeigers. Diese kombinierten Operatoren sind dasselbe wie die Zuweisung des Ergebnisses an den ersten Operanden der mathematischen Operation.
Der folgende Code halbiert zum Beispiel sofort den Wert von CurrentHealth:
# Beginne mit dem ursprünglichen Gesundheitswert
var CurrentHealth : float = 75,0
# Reduziere sie auf die Hälfte
set CurrentHealth *= 0,5
# CurrentHealth is now 37,5.
Vorzeichenbehaftete Fließkommazahlen
Ein Float mit Vorzeichen ist ein Wert, der positiv, negativ oder Null sein kann. Der Operator - kann verwendet werden, um eine Gleitkommazahl zu negieren, wenn - vor der Gleitkommazahl steht, z.B. 3,2
Du kannst auch den Operator + vor einer Gleitkommazahl verwenden, um deinen Code visuell auszurichten, aber der Wert der Gleitkommazahl wird dadurch nicht verändert.
Im folgenden Code heilt ein "Lebensentzug"-Angriff den Angreifer um ein Achtel des Schadens, der dem Ziel zugefügt wurde.
# Richte die Parameter ein, welche die Situation beschreiben
DamageInflicted : float = 10,0
LifeDrainMultiplier : float = 0,125
var CurrentAttackerHealth : float = 99,0
# Erhöhe die aktuelle Gesundheit basierend auf dem zugefügten Schaden.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# CurrentAttackerHealth ist jetzt 100,25.
Vergleich
Du kannst den fehlbaren Operator = verwenden, um zu prüfen, ob zwei Fließkommazahlen gleich sind, und den fehlbaren Operator <>, um auf Ungleichheit zu prüfen.
Da Zahlen geordnet sind, kannst du den fehlbaren Operator < verwenden, um zu prüfen, ob ein Float kleiner als ein anderer Float ist, und den fehlbaren Operator >, um zu prüfen, ob ein Float größer als ein anderer Float ist.
Du kannst den fehlbaren Operator <= verwenden, um zu prüfen, ob ein Float kleiner oder gleich einem anderen Float ist, und den fehlbaren Operator >=, um zu prüfen, ob ein Float größer oder gleich einem anderen Float ist.
NaN ist vergleichbar mit anderen Floats und NaN ist größer als alle anderen Floats und gleich sich selbst.
# Richte die Parameter ein, welche die Situation beschreiben
DamageInflicted : float = 10,0
LifeDrainMultiplier : float = 0,125
var CurrentAttackerHealth : float = 99,0
MaxAttackerHealth : float = 100,0
# Erhöhe die aktuelle Gesundheit basierend auf dem zugefügten Schaden.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# Sorge dafür, dass der Angreifer sich nicht über seine maximale Gesundheit hinaus heilen kann.
if (CurrentAttackerHealth > MaxAttackerHealth):
# Zu hoch! Reduziere auf den maximalen Wert.
set CurrentAttackerHealth = MaxAttackerHealth
# CurrentAttackerHealth is now 100,0.
Standard-Bibliothek
Die Standardbibliothek bietet Funktionen, die bei der Erstellung und Verwendung von Fließkommazahlen helfen, sowie allgemeine mathematische Strukturen und Funktionen. Weitere Details zu diesen Funktionen findest du in der Verse API-Referenz
Dauerhafter Typ
Fließkomma-Werte sind dauerhaft, was bedeutet, dass du sie in deiner modulbereichsbezogenen Variable weak_map verwenden kannst und ihre Werte dann über Spielsitzungen hinweg erhalten bleiben. Weitere Details zum Fortbestand in Verse findest du unter Verwenden dauerhafter Daten in Verse.