В Verse float используется в качестве типа для хранения и обработки чисел с плавающей запятой, таких как 1.0, -50.5 и 3.14159.
Число с плавающей запятой в Verse — это 64-разрядное число с плавающей запятой в формате IEEE, то есть оно может содержать положительное или отрицательное число с десятичной запятой в диапазоне [-2^1024 + 1, …, 0, …, 2^1024 - 1] или может иметь значение NaN (не число).
Реализация float отличается от стандарта IEEE следующим образом:
- Существует только одно значение
NaN. NaNравно самому себе.- Каждое число равно самому себе. Если два числа равны, то никакой чистый код Verse не может обнаружить разницу между ними.
0не может быть отрицательным.
Вы можете включать предопределённые значения типа float в свой код как литералы float. Литерал float — это число с плавающей запятой в коде.
Ниже приведен пример создания переменной типа float с именем MaxHealth, инициализированной литералом 100.0 типа float:
MaxHealth : float = 100.0
Операции с плавающей запятой
Числа с плавающей запятой поддерживают математические операции и сравнения с другими числами с плавающей запятой.
Математические операции
В Verse можно выполнять четыре основные математические операции с числами с плавающей запятой: сложение +, вычитание -, умножение * и деление /.
Существуют также комбинированные операторы для выполнения основных математических операций (сложение, вычитание, умножение и деление) и обновления разыменованного значения указателя. Эти комбинированные операторы аналогичны присвоению результата первому операнду математической операции.
Например, следующий код мгновенно уменьшает значение CurrentHealth вдвое:
# Пусть первоначально здоровье имеет некоторое исходное значение
var CurrentHealth : float = 75.0
# Уменьшим его в два раза
set CurrentHealth *= 0.5
# CurrentHealth теперь равно 37.5.
Числа с плавающей запятой со знаком
Число с плавающей запятой со знаком — это значение, которое может быть положительным, отрицательным или нулевым. Оператор - можно использовать для инвертирования числа с плавающей запятой, поставив перед ним -, например -3.2.
Также можно использовать оператор + перед числом с плавающей запятой, чтобы сделать код более единообразным визуально, но это не изменит значение числа с плавающей запятой.
В следующем коде атака «вытягивание жизни» исцеляет атакующего на одну восьмую часть урона, нанесённого цели.
# Зададим параметры, описывающие ситуацию
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
# Увеличим текущее здоровье с учётом нанесённого урона.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# CurrentAttackerHealth теперь равно 100.25.
Сравнение
Вы можете использовать оператор с возможностью ошибки = для проверки равенства двух чисел с плавающей запятой и оператор с возможностью ошибки <> для проверки неравенства.
Поскольку числа упорядочены, можно использовать оператор с возможностью ошибки < для проверки того, меньше ли одно число с плавающей запятой другого числа с плавающей запятой, и оператор с возможностью ошибки > для проверки того, больше ли одно число с плавающей запятой другого такого числа.
Можно использовать оператор с возможностью ошибки <= для проверки того, меньше или равно ли одно число с плавающей запятой другому числу с плавающей запятой, и оператор с возможностью ошибки >= для проверки того, больше ли равно одно число с плавающей запятой другому такому числу.
NaN сравнимо с другими числами с плавающей запятой; NaN больше всех других чисел с плавающей запятой и равно самому себе.
# Зададим параметры, описывающие ситуацию
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
MaxAttackerHealth : float = 100.0
# Увеличим текущее здоровье с учётом нанесённого урона.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# Убедимся, что атакующий не восстанавливает здоровье выше своего максимального уровня
if (CurrentAttackerHealth > MaxAttackerHealth):
# Слишком большое значение! Уменьшим до максимального значения.
set CurrentAttackerHealth = MaxAttackerHealth
# CurrentAttackerHealth теперь равно 100.0.
Стандартная библиотека
Стандартная библиотека содержит функции, помогающие создавать и использовать числа с плавающей запятой, а также общие математические структуры и функции. Более подробную информацию об этих функциях см. в Справочнике по API Verse.
Сохраняемый тип
Значения с плавающей запятой являются сохраняемыми. Это означает, что вы можете использовать их в переменных weak_map, входящих в область видимости модуля, и их значения будут сохраняться в течение всех игровых сессий. Подробнее о сохраняемых элементах в Verse см. в статье Использование сохраняемых данных в Verse.