ประเภทข้อมูล หมายเลข หรือ double แทนหมายเลข ทศนิยมความแม่นยำคู่ (64-bit) หมายเลขสามารถอยู่ในช่วงจาก -1.7 * 10308 ถึง 1.7 * 10308 (ประมาณ 15 หลักความแม่นยำ ทั้งบวกและลบ)
ลงชื่อและไม่ลงชื่อ
เครื่องหมายของหมายเลขระบุว่ามันเป็นบวกหรือลบ ตัวอย่างเช่น 1 เป็นบวกและ -1 เป็นลบ ใน Luau หมายเลข -0 เป็นเทียบเท่ากับ 0
print(0 == -0) --> trueprint(-0 > 1) --> falseprint(-0 < 1) --> trueprint(-0 > -1) --> trueprint(-0 < -1) --> false
การจำแนกประเภทหมายเลข
Luau ไม่แยกความแตกต่างระหว่างจำนวนเต็มและหมายเลข แต่การอ้างอิง API บางครั้งจะแยกความแตกต่างระหว่างทั้งสองเพื่อให้เฉพาะเจาะจงมากขึ้นเกี่ยวกับวิธีการใช้ API แต่ละอัน
float
ประเภทหมายเลข float หมายถึงหมายเลขจริงที่มีจุดทศนิยม ในแง่ของวิทยาศาสตร์คอมพิวเตอร์ พวกเขาคือ หมายเลขทศนิยมความแม่นยำเดี่ยว (32-bit) ซึ่งไม่แม่นยำเท่าหมายเลขทศนิยมความแม่นยำคู่ แต่มีความแม่นยำเพียงพอสำหรับการใช้งานส่วนใหญ่และต้องการหน่วยความจำและการเก็บข้อมูลน้อยกว่า
int
ประเภทหมายเลข integer หรือ int หมายถึงหมายเลขทั้งหมด 32-bit ซึ่งอยู่ในช่วงจาก -231 ถึง 231 - 1 คุณสมบัติและฟังก์ชันที่คาดหวังจำนวนเต็มอาจโดยอัตโนมัติรอบหรือเกิดข้อผิดพลาดเมื่อคุณกำหนดหรือส่งค่าไม่ใช่จำนวนเต็มให้กับพวกเขา
int64
ประเภทหมายเลข int64 หมายถึงจำนวนเต็ม 64-bit ที่มีเครื่องหมาย ซึ่งอยู่ในช่วงจาก -263 ถึง 263 - 1 ประเภทจำนวนเต็มนี้เป็นที่นิยมสำหรับวิธีการที่ใช้หมายเลข ID จากเว็บไซต์ Roblox ตัวอย่างเช่น Player.UserId เป็น int64 และ MarketplaceService:PromptPurchase() และ TeleportService:Teleport() ต่างก็คาดหวัง int64 สำหรับอาร์กิวเมนต์ ID
การบันทึก
หมายเลขจะถูกบันทึกโดยมีหมายเลขที่มีความสำคัญที่สุดก่อน (big-endian) มีหลายวิธีในการบันทึกอักษรหมายเลขใน Luau:
- ทศนิยม (ฐาน-10) — เขียนตัวเลขตามปกติใช้ตัวเลข 0–9 พร้อมจุดทศนิยมเดียวที่เลือกได้ เช่น 7, 1.25 หรือ -22.5.
- การบันทึกทางวิทยาศาสตร์ — เขียนหมายเลขทศนิยมตามด้วย e หรือ e+ แล้วตามด้วยจำนวนเต็มเพื่อยกหมายเลขทศนิยมไปยังพลังของ 10 เช่น 12e3 เท่ากับ 12 × 10^3 (12,000).
- เลขฐานสิบหก (ฐาน-16) — เริ่มหมายเลขด้วย 0x ตามด้วยตัวเลข 0–9 หรือ A–F (ไม่คำนึงถึงการใช้ตัวพิมพ์ใหญ่) เช่น 0xF เท่ากับ 15 และ 0x3FC เท่ากับ 1020.
การดำเนินการ
คุณสามารถใช้ ตัวดำเนินการ ทางตรรกะและเปรียบเทียบในการจัดการและเปรียบเทียบหมายเลข คุณยังสามารถใช้ฟังก์ชันทางคณิตศาสตร์ เช่น math.sqrt() และ math.exp() ในไลบรารี math และการดำเนินการแบบบิตในไลบรารี bit32
การตรวจสอบประเภท
คุณสามารถกำหนดได้ว่าค่า x เป็นหมายเลขหรือไม่ โดยใช้ type(x) หรือ typeof(x) ทั้งคู่จะส่งคืนสตริง number หาก x เป็นหมายเลข
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
ฟังก์ชันการปัดเศษ
คุณสามารถปัดเลขโดยใช้ math.floor(), math.ceil(), หรือ math.modf() ฟังก์ชันเหล่านี้ส่งคืนผลลัพธ์เป็นจำนวนเต็มหาก Luau สามารถแทนที่ด้วยจำนวนเต็ม หากหมายเลขมีขนาดใหญ่เกินไป Luau จะส่งคืนเป็น float
- เพื่อตรวจสอบว่าหมายเลข x เป็นจำนวนเต็มหรือไม่ ใช้ math.floor(x) == x.
- เพื่อปัดคะแนนลง ใช้ math.floor().
- เพื่อปัดคะแนนขึ้น ใช้ math.ceil().
- เพื่อปัดคะแนนไปยังศูนย์ ให้ใช้ math.modf() ซึ่งยังส่งคืนความแตกต่างของเศษส่วนของหมายเลขที่ปัดให้เป็นผลลัพธ์ที่สองด้วย
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