number veri tipi veya double, bir çift hassasiyetli (64-bit) kayan nokta sayısını temsil eder. Sayılar -1.7 * 10308 ile 1.7 * 10308 (yaklaşık 15 basamak hassasiyet, pozitif veya negatif) arasında değişebilir.
İşaretli ve işaretsiz
Bir sayının işareti, onun pozitif mi yoksa negatif mi olduğunu gösterir. Örneğin, 1 pozitiftir ve -1 negatiftir. Luau'da, -0 sayısı 0 ile eşdeğerdir.
print(0 == -0) --> trueprint(-0 > 1) --> falseprint(-0 < 1) --> trueprint(-0 > -1) --> trueprint(-0 < -1) --> false
Sayı sınıflandırmaları
Luau, tam sayılar ile sayılar arasında ayrım yapmaz, ancak API referansı bazen her API'nin nasıl kullanılacağı hakkında daha spesifik olmak için bunlar arasında ayrım yapar.
float
float sayı tipi, ondalık noktalı bir reel sayıyı ifade eder. Bilgisayar bilimleri terimleriyle, bunlar tek hassasiyetli (32-bit) kayan nokta sayısı olup, çift hassasiyetli kayan nokta sayılarına göre daha az hassas olsa da, çoğu kullanım durumu için yeterince hassastır ve daha az bellek ve depolama alanı gerektirir.
int
integer sayı tipi veya int, -231 ile 231 - 1 arasında değişen 32-bit tam sayıyı ifade eder. Tam sayı bekleyen özellikler ve fonksiyonlar, onlara tam sayı olmayan değerler atadığınızda veya geçirdiğinizde otomatik olarak yuvarlayabilir veya hata verebilir.
int64
int64 sayı tipi, -263 ile 263 - 1 arasında değişen işaretli 64-bit tam sayıyı ifade eder. Bu tür bir tam sayı, Roblox web sitesinden alınan kimlik numaralarını kullanan yöntemler için sıkça kullanılır. Örneğin, Player.UserId bir int64'tür ve MarketplaceService:PromptPurchase() ile TeleportService:Teleport() her biri kimlik argümanları için int64 bekler.
Notasyon
Sayılar en önemli basamaklar önce gelecek şekilde (big-endian) yazılır. Luau'da sayı literallerini yazmanın birden fazla yolu vardır:
- Ondalık (taban-10) — Sayının basamaklarını normal olarak 0–9 rakamları ile ve bir tane isteğe bağlı ondalık nokta kullanarak yazın, örneğin 7, 1.25 veya -22.5.
- Bilimsel notasyon — Bir ondalık sayıyı e veya e+ ile yazın, ardından ondalık sayıyı 10'un bir kuvvetine yükseltmek için bir tam sayı ekleyin. Örneğin, 12e3, 12 × 10^3` (12,000) eder.
- Onaltılık (taban-16) — Sayıyı 0x ile başlayıp 0–9 veya A–F rakamları ile devam ettirin (büyük/küçük harf duyarsızdır). Örneğin, 0xF 15'tir ve 0x3FC 1020'dir.
- İkilik (taban-2) — Sayıyı 0b ile başlayıp 0 veya 1'ler ekleyin, örneğin 0b1100 (10'luk sistemde 12).
İşlemler
Sayılara müdahale etmek ve karşılaştırmak için mantıksal ve ilişkisel operatörleri kullanabilirsiniz. Ayrıca, math.sqrt() ve math.exp() gibi matematiksel fonksiyonları math kütüphanesinde ve bit düzeyinde işlemleri bit32 kütüphanesinde kullanabilirsiniz.
Tip incelemesi
Bir değerin x sayı olup olmadığını belirlemek için type(x) veya typeof(x) kullanabilirsiniz. Her iki fonksiyon da x bir sayıysa number döner.
local testInt = 5local testDecimal = 9.12761656local testString = "Merhaba"print(type(testInt)) --> numberprint(type(testDecimal)) --> numberprint(type(testString)) --> stringprint(typeof(testInt)) --> numberprint(typeof(testDecimal)) --> numberprint(typeof(testString)) --> string
Yuvarlama fonksiyonları
Sayıları math.floor(), math.ceil() veya math.modf() kullanarak yuvarlayabilirsiniz. Bu fonksiyonlar, Luau bunu bir tam sayı olarak temsil edebiliyorsa tam sayı sonucu döner. Sayı çok büyükse, Luau bunu bir float olarak döner.
- Bir sayının x tam sayı olup olmadığını belirlemek için math.floor(x) == x kullanın.
- Bir sayıyı aşağı yuvarlamak için math.floor() kullanın.
- Bir sayıyı yukarı yuvarlamak için math.ceil() kullanın.
- Bir sayıyı sıfıra doğru yuvarlamak için math.modf() kullanın. Bu fonksiyon ayrıca, yuvarlanan sayının kesirli farkını ikinci bir sonuç olarak döner.
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