Numéros

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le taperde données number , ou double, représente un nombre à double précision (64 bits) flottant.Les nombres peuvent varier de -1.7 * 10 308 à 1.7 * 10 308 (environ 15 chiffres de précision, positifs ou négatifs).

Signé et non signé

Le signe du nombre indique s'il est positif ou négatif.Par exemple, 1 est positif et -1 est négatif.Dans Luau, le nombre -0 est équivalent à 0 .


print(0 == -0) --> vrai
print(-0 > 1) --> faux
print(-0 < 1) --> vrai
print(-0 > -1) --> vrai
print(-0 < -1) --> false

Classifications de numéros

Luau ne distingue pas entre les entiers et les nombres, mais la référence de l'API distingue parfois entre eux pour être plus spécifique sur la façon d'utiliser chaque API.

flottant

Le type de nombre float fait référence à un nombre réel avec un emplacementdécimal.En conditionsd'informatique, ils sont un nombre de point flottant de précision unique (32 bits) , qui n'est pas aussi précis que les nombres de point flottant de précision double, mais est suffisamment précis pour la plupart des cas d'utilisation et nécessite moins de mémoire et de stockage.

instant

Le taperde nombre integer ou int fait référence à un nombre entier de 32 bits, qui va de -2 31 à 2 31 - 1.Les propriétés et les fonctions qui s'attendent à des entiers peuvent automatiquement arrondir ou augmenter les erreurs lorsque vous leur attribuez ou les passez à des non-entiers.

int64

Le type de nombre int64 réfère à un nombre entier signé de 64 bits, qui va de -2 63 à 2 63 - 1.Ce type d'entier est commun pour les méthodes qui utilisent des numéros d'identification du site Web Roblox.Par exemple, Player.UserId est un int64 , et MarketplaceService:PromptPurchase() et TeleportService:Teleport() chacun attend int64 pour les arguments d'ID.

Notation

Les nombres sont notés avec les chiffres les plus significatifs en premier (big-endian). Il existe plusieurs façons de noter les littéraux numériques en Luau :

  • Décimal (base-10) — Écrivez les chiffres du nombre normalement en utilisant les chiffres 0–9 avec un seul point décimal facultatif, par exemple 7 , 1.25 ou -22.5 .
  • Notation scientifique — Écrivez un nombre décimal suivi de e ou e+ , puis un entier pour augmenter le nombre décimal à une puissance de 10.Par instance, 12e3 est 12 × 10^3 (12 000).
  • Hexadécimal (base-16) — Commencez le nombre par 0x suivi de chiffres 0–9 ou A–F (la capitale est ignorée).Par exemple, 0xF est 15 et 0x3FC est 1020.
  • Binaire (base-2) — Commencez le nombre par 0b suivi de 0s ou 1s, par exemple 0b1100 (12 au format décimal).

Opérations

Vous pouvez utiliser des opérateurs logiques et relationnels pour manipuler et comparer les nombres.Vous pouvez également utiliser des fonctions mathématiques telles que math.sqrt() et math.exp() dans la bibliothèque math et des opérations bitwise dans la bibliothèque bit32.

Type d'introspection

Vous pouvez déterminer si une valeur x est un nombre en utilisant type(x) ou typeof(x) .Les deux retournent la chaîne number si x est un nombre.


local testInt = 5
local testDecimal = 9.12761656
local testString = "Hello"
print(type(testInt)) --> numéro
print(type(testDecimal)) --> numéro
print(type(testString)) --> chaîne
print(typeof(testInt)) --> numéro
print(typeof(testDecimal)) --> numéro
print(typeof(testString)) --> string

Fonctions rondes

Vous pouvez arrondir les nombres en utilisant math.floor() , math.ceil() ou math.modf() .Ces fonctions retournent un résultat entier si Luau peut le représenter comme un entier.Si le nombre est trop grand, Luau le renvoie en tant que flottant.

  • Pour déterminer si un nombre x est un entier, utilisez math.floor(x) == x .
  • Pour arrondir un nombre vers le bas, utilisez math.floor() .
  • Pour arrondir un nombre supérieur, utilisez math.ceil() .
  • Pour arrondir un nombre vers zéro, utilisez math.modf(). Il renvoie également la différence fractionnelle du nombre arrondi comme deuxième resultats.

print(math.floor(3.3)) --> 3
print(math.floor(-3.3)) --> -4
print(math.ceil(3.3)) --> 4
print(math.ceil(-3.3)) --> -3
print(math.modf(3.3)) --> 3 0.2999999999999998
print(math.modf(-3.3)) --> -3 -0.2999999999999998