ตัวเลข

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

พิมพ์หรือ แทนที่ตัวเลขแบบลอยตัวความถูกต้องสูง 64 บิต ตัวเลขสามารถอยู่ในช่วงตั้งแต่ -1.7 * 10 308 ถึง 1.7 * 10 308 (ประมาณ 15 หลักทศนิยมบวกหรือลบ)

ลงนามและไม่ลงนาม

สัญญาณของตัวเลขบ่งบอกว่ามันเป็นบวกหรือเป็นลบตัวอย่างเช่น 1 เป็นบวกและ -1 เป็นลบใน Luau หมายเลข -0 เท่ากับ 0


print(0 == -0) --> จริง
print(-0 > 1) --> ไม่ถูก
print(-0 < 1) --> จริง
print(-0 > -1) --> จริง
print(-0 < -1) --> false

การจัดหมวดหมายตามจำนวน

Luau ไม่แยกแยะระหว่างตัวเลขและตัวเลข แต่คู่มือ API บางครั้งแยกแยะระหว่างพวกเขาเพื่อให้เฉพาะเจาะจงเกี่ยวกับวิธีการใช้แต่ละ API

ลอย

ประเภทตัวเลข float หมายถึงตัวเลขจริงที่มีตำแหน่งทศนิยมในแง่ของวิทยาศาสตร์คอมพิวเตอร์พวกเขาเป็น จํานวนจุดทศนิยมเดียว (32 บิต) ลอยตัว ซึ่งไม่แม่นยําเท่ากับจํานวนจุดทศนิยมคู่ แต่มีความแม่นยําเพียงพอสําหรับกรณีการใช้งานส่วนใหญ่และต้องใช้หน่วยความจําและที่เก็บน้อยลง

int สร้างเมื่อวันที่: เมื่อวันที่สร้าง:

พิมพ์integer หรือ int หมายถึงจํานวน 32 บิตทั้งหมดซึ่งอยู่ระหว่าง -2 31 ถึง 2 31 -1คุณสมบัติและฟังก์ชันที่คาดว่าจะมีเลขจํานวนเต็มอาจรอบหรือเพิ่มข้อผิดพลาดโดยอัตโนมัติเมื่อคุณกําหนดหรือส่งเลขจํานวนที่ไม่ใช่เลขจํานวนให้กับพวกเขา

ตัวเลข 64 บิต

ประเภทตัวเลข int64 หมายถึงตัวเลข 64 บิตที่ลงนามซึ่งอยู่ในช่วงตั้งแต่ -2 63 ถึง 2 63 - 1ชนิดของตัวเลขนี้เป็นที่นิยมสำหรับวิธีการที่ใช้หมายเลขรหัสจากเว็บไซต์ Robloxตัวอย่างเช่น Player.UserId เป็น int64 และ MarketplaceService:PromptPurchase() และ TeleportService:Teleport() แต่ละคนคาดว่า int64 สำหรับอาร์กิวเมนต์ ID

สัญลักษณ์

ตัวเลขจะถูกบอกด้วยตัวเลขที่สำคัญที่สุดก่อน (big-endian) มีหลายวิธีในการบอกตัวอักษรตัวเลขใน Luau:

  • เบี้ยว (ฐาน-10) — เขียนตัวเลขของหมายเลขโดยปกติโดยใช้ตัวเลข 0–9 ด้วยจุดทศนิยมเดียวเพียงหนึ่งจุดเช่น 7 หรือ 1.25 หรือ -22.5
  • การบันทึกทางวิทยาศาสตร์ — เขียนตัวเลขทศนิยมตามด้วย e หรือ e+ จากนั้นตัวเลขอตันเพื่อเพิ่มตัวเลขทศนิยมเป็นอำนาจ อินสแตนซ์12e3 คือ 12 × 10^3 (12,000)
  • หกเหลี่ยม (ฐาน-16) — เริ่มตัวเลขด้วย 0x ตามด้วยตัวเลข 0–9 หรือ A–F (การเขียนใหญ่ถูกเพิกเฉย)ตัวอย่างเช่น 0xF คือ 15 และ 0x3FC คือ 1020
  • ไบนารี (ฐาน 2) — เริ่มตัวเลขด้วย 0b ตามด้วย 0 หรือ 1 ตัวอย่างเช่น 0b1100 (12 ในรูปแบบเศษส่วน)

การดำเนินการ

คุณสามารถใช้ตัวประกอบเชิงตรรกและเชิงเส้นต์ เพื่อควบคุมและเปรียบเทียบตัวเลขคุณยังสามารถใช้ฟังก์ชันทางคณิตศาสตร์เช่น math.sqrt() และ math.exp() ในห้องสมุด math และการดำเนินการแบบบิตในห้องสมุด bit32

ประเภทการตรวจสอบ

คุณสามารถกำหนดได้ว่าค่า x เป็นตัวเลขโดยใช้ type(x) หรือ typeof(x)ทั้งสองคืนสตริง number หาก x เป็นตัวเลข


local testInt = 5
local testDecimal = 9.12761656
local testString = "Hello"
print(type(testInt)) --> จํานวน
print(type(testDecimal)) --> จํานวน
print(type(testString)) --> สตริง
print(typeof(testInt)) --> จํานวน
print(typeof(testDecimal)) --> จํานวน
print(typeof(testString)) --> string

ฟังก์ชันรอบ

คุณสามารถรอบตัวเลขโดยใช้ math.floor() , math.ceil() หรือ math.modf() ได้ฟังก์ชันเหล่านี้จะคืนผลลัพธ์เป็นจํานวนเต็มหาก Luau สามารถแทนที่ได้เป็นจํานวนเต็มหากตัวเลขมีขนาดใหญ่เกินไป Luau จะส่งคืนเป็นลอยตัว

  • เพื่อกำหนดว่าหมายเลข x เป็นจํานวนเต็มหรือไม่ใช้ math.floor(x) == x
  • เพื่อลดตัวเลขลงให้ใช้ math.floor()
  • เพื่อรอบตัวเลขขึ้น, ใช้ math.ceil() .
  • เพื่อทำให้ตัวเลขมุ่งสู่ศูนย์ ให้ใช้ math.modf() มันยังส่งคืนความแตกต่างทศนิยมของตัวเลขที่ถูกตัดส่วนเป็นผลลัพธ์ที่สอง

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