Le type de données nombre, ou double, représente un nombre à virgule flottante double précision (64 bits). Les nombres peuvent varier de -1,7 * 10308 à 1,7 * 10308 (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) --> trueprint(-0 > 1) --> falseprint(-0 < 1) --> trueprint(-0 > -1) --> trueprint(-0 < -1) --> false
Classifications des nombres
Luau ne fait pas de distinction entre les entiers et les nombres, mais la référence API fait parfois la distinction pour être plus spécifique sur la façon d'utiliser chaque API.
float
Le type de nombre float fait référence à un nombre réel avec une virgule décimale. En termes d'informatique, ce sont des nombres à virgule flottante simple précision (32 bits), qui ne sont pas aussi précis que les nombres à virgule flottante double précision, mais suffisamment précis pour la plupart des cas d'utilisation tout en nécessitant moins de mémoire et de stockage.
int
Le type de nombre integer, ou int, fait référence à un nombre entier de 32 bits, qui varie de -231 à 231 - 1. Les propriétés et fonctions qui attendent des entiers peuvent arrondir automatiquement ou générer des erreurs lorsque vous assignez ou passez des non-entiers.
int64
Le type de nombre int64 fait référence à un entier signé de 64 bits, qui varie de -263 à 263 - 1. Ce type d'entier est courant 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() attendent chacune un int64 pour les arguments ID.
Notation
Les nombres sont notés avec les chiffres les plus significatifs en premier (big-endian). Il existe plusieurs manières de noter les littéraux de nombres dans Luau :
- Décimal (base-10) — Écrivez les chiffres du nombre normalement en utilisant les chiffres 0–9 avec un seul point décimal optionnel, par exemple 7, 1.25, ou -22.5.
- Notation scientifique — Écrivez un nombre décimal suivi de e ou e+, puis un entier pour élever le nombre décimal à une puissance de 10. Par exemple, 12e3 est 12 × 10^3 (12 000).
- Hexadécimal (base-16) — Commencez le nombre par 0x suivi des chiffres 0–9 ou A–F (la capitalisation est ignorée). Par exemple, 0xF est 15 et 0x3FC est 1020.
- Binaire (base-2) — Commencez le nombre par 0b suivi de 0 ou 1, par exemple 0b1100 (12 en 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 effectuer des opérations bit à bit dans la bibliothèque bit32.
Introspection de type
Vous pouvez déterminer si une valeur x est un nombre en utilisant type(x) ou typeof(x). Les deux renvoient la chaîne number si x est un nombre.
local testInt = 5local testDecimal = 9.12761656local testString = "Hello"print(type(testInt)) --> numberprint(type(testDecimal)) --> numberprint(type(testString)) --> stringprint(typeof(testInt)) --> numberprint(typeof(testDecimal)) --> numberprint(typeof(testString)) --> string
Fonctions d'arrondi
Vous pouvez arrondir les nombres en utilisant math.floor(), math.ceil(), ou math.modf(). Ces fonctions renvoient un résultat entier si Luau peut le représenter comme un entier. Si le nombre est trop grand, Luau le renvoie sous forme de float.
- 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 vers le haut, utilisez math.ceil().
- Pour arrondir un nombre vers zéro, utilisez math.modf(). Il renvoie également la différence fractionnaire du nombre arrondi en tant que second résultat.
print(math.floor(3.3)) --> 3print(math.floor(-3.3)) --> -4print(math.ceil(3.3)) --> 4print(math.ceil(-3.3)) --> -3print(math.modf(3.3)) --> 3 0.2999999999999998print(math.modf(-3.3)) --> -3 -0.2999999999999998