Tipe data angka, atau double, mewakili angka titik mengambang presisi ganda (64-bit). Angka bisa berkisar dari -1.7 * 10308 hingga 1.7 * 10308 (sekitar 15 digit presisi, positif atau negatif).
Ditandatangani dan tidak ditandatangani
Tanda dari angka menunjukkan apakah itu positif atau negatif. Misalnya, 1 adalah positif dan -1 adalah negatif. Di Luau, angka -0 setara dengan 0.
print(0 == -0) --> trueprint(-0 > 1) --> falseprint(-0 < 1) --> trueprint(-0 > -1) --> trueprint(-0 < -1) --> false
Klasifikasi angka
Luau tidak membedakan antara bilangan bulat dan angka, tetapi referensi API kadang-kadang membedakan keduanya untuk lebih spesifik tentang cara menggunakan setiap API.
float
Tipe angka float mengacu pada angka riil dengan tempat desimal. Dalam istilah ilmu komputer, mereka adalah angka titik mengambang presisi tunggal (32-bit), yang tidak seakurat angka titik mengambang presisi ganda, tetapi cukup akurat untuk sebagian besar kasus penggunaan dan membutuhkan lebih sedikit memori dan penyimpanan.
int
Tipe angka integer, atau int, mengacu pada angka bulat 32-bit, yang berkisar dari -231 hingga 231 - 1. Properti dan fungsi yang mengharapkan bilangan bulat mungkin secara otomatis membulatkan atau mengeluarkan kesalahan saat Anda menetapkan atau mengirimkan bukan bilangan bulat kepada mereka.
int64
Tipe angka int64 mengacu pada bilangan bulat bertanda 64-bit, yang berkisar dari -263 hingga 263 - 1. Jenis bilangan bulat ini umum digunakan untuk metode yang menggunakan nomor ID dari situs web Roblox. Misalnya, Player.UserId adalah int64, dan MarketplaceService:PromptPurchase() serta TeleportService:Teleport() masing-masing mengharapkan int64 untuk argumen ID.
Notasi
Angka ditulis dengan digit yang paling signifikan terlebih dahulu (big-endian). Ada beberapa cara untuk menuliskan literal angka di Luau:
- Desimal (basis-10) — Tulis digit dari angka secara normal menggunakan digit 0–9 dengan satu titik desimal opsional, misalnya 7, 1.25, atau -22.5.
- Notasi ilmiah — Tulis angka desimal diikuti oleh e atau e+, lalu bilangan bulat untuk mengangkat angka desimal ke pangkat 10. Misalnya, 12e3 adalah 12 × 10^3 (12.000).
- Heksadesimal (basis-16) — Mulai angka dengan 0x diikuti oleh digit 0–9 atau A–F (kapitalisasi diabaikan). Misalnya, 0xF adalah 15 dan 0x3FC adalah 1020.
- Biner (basis-2) — Mulai angka dengan 0b diikuti oleh 0s atau 1s, misalnya 0b1100 (12 dalam format desimal).
Operasi
Anda dapat menggunakan operator logika dan relasional untuk memanipulasi dan membandingkan angka. Anda juga dapat menggunakan fungsi matematika seperti math.sqrt() dan math.exp() dalam perpustakaan math serta operasi bitwise dalam perpustakaan bit32.
Introspeksi tipe
Anda dapat menentukan apakah nilai x adalah angka dengan menggunakan type(x) atau typeof(x). Keduanya mengembalikan string number jika x adalah angka.
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
Fungsi bulat
Anda dapat membulatkan angka menggunakan math.floor(), math.ceil(), atau math.modf(). Fungsi-fungsi ini mengembalikan hasil integer jika Luau dapat merepresentasikannya sebagai integer. Jika angkanya terlalu besar, Luau mengembalikannya sebagai float.
- Untuk menentukan apakah angka x adalah bilangan bulat, gunakan math.floor(x) == x.
- Untuk membulatkan angka ke bawah, gunakan math.floor().
- Untuk membulatkan angka ke atas, gunakan math.ceil().
- Untuk membulatkan angka menuju nol, gunakan math.modf(). Ini juga mengembalikan selisih pecahan dari angka yang dibulatkan sebagai hasil kedua.
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