Verse utiliza float como tipo para almacenar y controlar números de coma flotante, como 1.0, -50.5 y 3.14159.
Un float en Verse es un float que ocupa 64 bits según el estándar IEEE, lo que significa que puede contener un número positivo o negativo que tiene una coma decimal en el rango [-2^1024 + 1, … , 0, … , 2^1024 - 1], o tiene el valor NaN (Not a Number).
La implementación para float difiere del estándar IEEE en los siguientes aspectos:
- Solo hay un valor
NaN. NaNes igual a sí mismo.- Cada número es igual a sí mismo. Si dos números son iguales, entonces ningún código de Verse puro puede observar la diferencia entre ellos.
0no puede ser negativo.
Puedes incluir valores float predefinidos dentro de tu código como literales de float. Un literal de float es un número de coma flotante en el código.
El siguiente es un ejemplo de cómo crear una variable de float denominada MaxHealth, inicializada con el literal de float 100.0:
MaxHealth : float = 100.0
Operaciones de float
Los floats admiten operaciones matemáticas y comparaciones con otros floats.
Matemáticas
Puedes hacer las cuatro operaciones matemáticas básicas con floats en Verse: + para sumar, - para restar, * para multiplicar y / para dividir.
También hay operadores combinados para realizar las operaciones matemáticas básicas (suma, resta, multiplicación y división), y para actualizar el valor desreferenciado de un puntero. Estos operadores combinados son lo mismo que asignar el resultado al primer operando de la operación matemática.
Por ejemplo, el siguiente código reduce instantáneamente a la mitad el valor de CurrentHealth:
# Empieza con el valor de salud original.
var CurrentHealth : float = 75.0
# Redúcelo a la mitad.
set CurrentHealth *= 0.5
# CurrentHealth es ahora 37,5.
Números de coma flotante con signo
Un float con signo es un valor que puede ser positivo, negativo o cero. El operador - se puede utilizar para negar un float si - aparece antes del float, por ejemplo -3.2.
También puedes usar el operador + antes de un float para ayudar a alinear tu código visualmente, pero no cambiará el valor del float.
En el siguiente código, un ataque de «drenaje de vida» cura al atacante un octavo del daño infligido al objetivo.
# Configura los parámetros que describen la situación.
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
# Aumenta la salud actual en función del daño infligido.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# CurrentAttackerHealth es ahora 100,25.
Comparación
Puedes utilizar el operador falible = para probar si dos floats son iguales, y el operador falible <> para probar la desigualdad.
Dado que los números están ordenados, puedes utilizar el operador falible < para comprobar si un float es menor que otro, y el operador falible > para comprobar si un float es mayor que otro.
Puedes utilizar el operador falible <= para comprobar si un float es menor o igual a otro float, y el operador falible >= para comprobar si un float es mayor o igual a otro float.
NaN es comparable como otros floats, y NaN es mayor que todos los demás floats e igual a sí mismo.
# Configura los parámetros que describen la situación.
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
MaxAttackerHealth : float = 100.0
# Aumenta la salud actual en función del daño infligido.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# Asegúrate de que el atacante no se cure más allá de su salud máxima.
if (CurrentAttackerHealth > MaxAttackerHealth):
# ¡Demasiado alta! Reduce al valor máximo.
set CurrentAttackerHealth = MaxAttackerHealth
# CurrentAttackerHealth es ahora 100,0.
Biblioteca estándar
La biblioteca estándar proporciona funciones para ayudar a crear y utilizar floats, y estructuras y funciones matemáticas comunes. Consulta las Referencias de la API de Verse para obtener más información sobre estas funciones.
Tipo persistente
Los valores de coma flotante son persistentes, lo que significa que puedes utilizarlos en tus variables weak_map de tu ámbito de módulo y hacer que sus valores se mantengan a lo largo de la sesión de juego. Para obtener más información sobre la persistencia en Verse, consulta la sección Cómo utilizar datos persistentes en Verse.