O Verse usa float como o tipo para armazenar e manipular números de ponto flutuante, como 1.0, -50.5 e 3.14159.
Um float no Verse é um float IEEE de 64 bits, o que significa que ele pode conter um número positivo ou negativo com um ponto decimal no intervalo [-2^1024 + 1, … , 0, … , 2^1024 - 1], ou tem o valor NaN ("Not a Number", não é um número).
A implementação para floats difere do padrão IEEE das seguintes maneiras:
Há somente um valor
NaN.NaNé igual a si mesmo.Todos os números são iguais a si mesmos. Se dois números forem iguais, nenhum código puro do Verse poderá observar a diferença entre eles.
0não pode ser negativo.
Você pode incluir valores de float predefinidos em seu código como literais float. Um literal float é um número de ponto flutuante no seu código.
Veja a seguir um exemplo de como criar uma variável float denominada MaxHealth, inicializada com o literal float 100.0:
MaxHealth : float = 100.0Operações de float
Floats aceitam operações matemáticas e comparações com outros floats.
Matemática
Você pode realizar as quatro operações matemáticas básicas com floats no Verse: + para adição, - para subtração, * para multiplicação e / para divisão.
Também existem operadores combinados para realizar as operações matemáticas básicas (adição, subtração, multiplicação e divisão) e atualizar o valor não referenciado de um ponteiro. Esses operadores combinados são o mesmo que atribuir o resultado ao primeiro operando da operação matemática.
Por exemplo, o código a seguir reduz instantaneamente pela metade o valor de CurrentHealth:
# Start with the original health value
var CurrentHealth : float = 75.0
# Reduce it to half
set CurrentHealth *= 0.5
# CurrentHealth is now 37.5.Números de ponto flutuante com sinal
Um float com sinal é um valor que pode ser positivo, negativo ou zero. O operador - pode ser usado para negar um float se - aparecer antes desse float, por exemplo -3.2.
Você também pode usar o operador + antes de um float para ajudar a alinhar seu código visualmente, mas isso não mudará o valor do float.
No código a seguir, um ataque de "drenagem de vida" cura o atacante em um oitavo dos danos causados ao alvo.
# Set up the parameters that describe the situation
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
# Increase current health based on damage inflicted.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# CurrentAttackerHealth is now 100.25.Comparação
Você pode usar o operador falível = para testar se dois floats são iguais e o operador falível <> para testar a desigualdade.
Como os números são ordenados, você pode usar o operador falível < para testar se um float é menor que outro float e o operador falível > para testar se um float é maior que outro float.
Você pode usar o operador falível <= para testar se um float é menor que ou igual a outro float e o operador falível >= para testar se um float é maior ou igual a outro float.
NaN é comparável como outros floats, e NaN é maior que todos os outros floats e igual a si mesmo.
# Set up the parameters that describe the situation
DamageInflicted : float = 10.0
LifeDrainMultiplier : float = 0.125
var CurrentAttackerHealth : float = 99.0
MaxAttackerHealth : float = 100.0
# Increase current health based on damage inflicted.
set CurrentAttackerHealth += DamageInflicted * HealingMultiplier
# Ensure that the attacker does not heal beyond their maximum health
Biblioteca padrão
A biblioteca padrão fornece funções para ajudar na criação e no uso de floats e estruturas e funções matemáticas comuns. Consulte a referência de APIs do Verse para obter mais detalhes sobre essas funções.
Tipo persistente
Os valores de ponto flutuante são persistentes, ou seja, você pode usá-lo nas variáveis weak_map com escopo de módulo e fazer com que seus valores persistam entre as sessões de jogo. Consulte mais detalhes sobre a persistência em Verse em Como usar dados persistentes em Verse.