Liczby

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

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) --> prawda
print(-0 > 1) --> fałsz
print(-0 < 1) --> prawda
print(-0 > -1) --> prawda
print(-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 = 5
local testDecimal = 9.12761656
local testString = "Hello"
print(type(testInt)) --> numer
print(type(testDecimal)) --> numer
print(type(testString)) --> ciąg
print(typeof(testInt)) --> numer
print(typeof(testDecimal)) --> numer
print(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)) --> 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