В 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.