wpisywaćdanych number lub double reprezentuje liczbę podwójną precyzję (64-bitową) pływającą.Liczby mogą wynosić od -1.7 * 10 308 do 1.7 * 10 308 (około 15 cyfr precyzji, pozytywnych lub negatywnych).
Podpisane i niepodpisane
Znak liczby wskazuje, czy jest pozytywny czy negatywny.Na przykład, 1 jest pozytywny, a -1 jest negatywny.W Luau numer -0 jest równy 0.
print(0 == -0) --> prawdaprint(-0 > 1) --> fałszprint(-0 < 1) --> prawdaprint(-0 > -1) --> prawdaprint(-0 < -1) --> false
Klasyfikacje liczb
Luau nie rozróżnia między liczbami i całkami, ale odniesienie API czasami rozróżnia między nimi, aby być bardziej szczegółowe o tym, jak korzystać z każdej API.
przepływ
Typ liczby float odnosi się do rzeczywistej liczby z dziesiętną miejsce.W warunkiinformatyki komputerowej są to pojedyncze precyzyjne (32-bitowe) liczby pływające, które nie są tak precyzyjne jak liczby pływające o podwójnej precyzji, ale są wystarczająco precyzyjne dla większości przypadków użytkowych i wymagają mniej pamięci i przestrzeni dyskowej.
int
wpisywaćliczby integer lub int odnosi się do 32-bitowej całkowitej liczby, która wynosi od -2 31 do 2 31 - 1.Właściwości i funkcje, które oczekują całych liczb, mogą automatycznie zaokrąglać lub podnieść błędy, gdy przypiszesz lub przekażesz im niecałe liczby.
int64
Typ liczby int64 odnosi się do podpisanego 64-bitowego całkowitego, który wynosi od -2 63 do 2 63 - 1.Ten typ liczby całkowitej jest powszechny dla metod, które wykorzystują numery identyfikacyjne z witryny Roblox.Na przykład, Player.UserId jest int64 , a MarketplaceService:PromptPurchase() i TeleportService:Teleport() każdy oczekuje int64 dla argumentów ID.
Notacja
Liczby są oznaczane najpierw za pomocą najbardziej znaczących liczb (endian duży). Istnieje wiele sposobów na oznaczenie literali liczbowych w Luau:
- Dekimalny (podstawa 10) — Napisz cyfry liczby zwykłym sposobem za pomocą cyfr 0–9 za pomocą pojedynczej opcjonalnej dziesiętnej liczby, na przykład 7 , 1.25 lub -22.5.
- Notacja naukowa — Napisz dziesiętna liczbę połączoną z e lub e+, a następnie całkowitą liczbę, aby podnieść dziesiętną liczbę do potęgi 10.Na instancja, 12e3 jest 12 × 10^3 (12 000).
- Heksadecimalny (base-16) — Rozpocznij numer od 0x następującego po nim cyfr 0–9 lub A–F (ignoruje się pisanie dużych liter).Na przykład, 0xF jest 15, a 0x3FC jest 1020.
- Binarny (base-2) — Rozpocznij numer od 0b następującego po nim 0s lub 1s, na przykład 0b1100 (12 w formacie dziesiętnym).
Operacje
Możesz używać logicznych i relacyjnych operatorów do manipulowania i porównywania liczb.Możesz również używać funkcji matematycznych, takich jak math.sqrt() i math.exp() w bibliotece math i operacji bitowych w bibliotece bit32.
Typ introspekcji
Możesz określić, czy wartość x jest liczbą, używając type(x) lub typeof(x).Oba zwracają ciąg number, jeśli x jest liczbą.
local testInt = 5local testDecimal = 9.12761656local testString = "Hello"print(type(testInt)) --> numerprint(type(testDecimal)) --> numerprint(type(testString)) --> ciągprint(typeof(testInt)) --> numerprint(typeof(testDecimal)) --> numerprint(typeof(testString)) --> string
Okrągłe funkcje
Możesz zaokrąglać liczby za pomocą math.floor() , math.ceil() lub math.modf() .Funkcje te zwracają wynik całkowity, jeśli Luau może go reprezentować jako całkowity.Jeśli liczba jest zbyt duża, Luau zwraca ją jako zmienną浮动.
- Aby określić, czy liczba x jest całkowitą, użyj math.floor(x) == x.
- Aby zaokrąglić liczbę w dół, użyj math.floor().
- Aby zaokrąglić liczbę w górę, użyj math.ceil().
- Aby zaokrąglić liczbę w kierunku zera, użyj math.modf(). Powraca również różnicę frakcyjną zaokrąglonej liczby jako drugi wynik.
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