Lua จัดการกับทั้งจำนวนเต็มและจำนวนลอยได้อย่างไร
เท่าที่ฉันจำได้ว่าตัวเองเขียนโปรแกรมฉันได้รับการสอนไม่ให้เปรียบเทียบจำนวนจุดลอยตัวเพื่อความเท่าเทียมกัน ตอนนี้ในขณะที่อ่านการเขียนโปรแกรมใน Luaเกี่ยวกับnumberประเภทLua ฉันพบต่อไปนี้: ประเภทหมายเลขแสดงถึงจำนวนจริง (ทศนิยมสองตำแหน่งที่มีความแม่นยำ) Lua ไม่มีประเภทจำนวนเต็มเนื่องจากไม่ต้องการ มีความเข้าใจผิดอย่างกว้างขวางเกี่ยวกับข้อผิดพลาดทางเลขทศนิยมและบางคนกลัวว่าแม้การเพิ่มขึ้นอย่างง่ายสามารถไปแปลก ๆ กับตัวเลขจุดลอยตัว ความจริงก็คือเมื่อคุณใช้ double เพื่อแทนค่าจำนวนเต็มจะไม่มีข้อผิดพลาดในการปัดเศษเลย (เว้นแต่ว่าจำนวนจะมากกว่า 100,000,000,000,000) โดยเฉพาะอย่างยิ่งหมายเลข Lua สามารถแสดงจำนวนเต็มที่มีความยาวใด ๆ โดยไม่มีปัญหาการปัดเศษ ยิ่งไปกว่านั้นซีพียูที่ทันสมัยส่วนใหญ่ทำเลขคณิตทศนิยมให้เร็วที่สุด (หรือเร็วกว่า) เลขจำนวนเต็ม เป็นจริงสำหรับทุกภาษาหรือไม่ โดยพื้นฐานถ้าเราไม่ไปเกินจุดลอยเป็นสองเท่าเราจะปลอดภัยในเลขคณิตจำนวนเต็มหรือไม่ หรือเพื่อให้สอดคล้องกับชื่อคำถามมีอะไรพิเศษที่ Lua ทำกับnumberประเภทของมันดังนั้นมันจึงทำงานได้ดีทั้งแบบจำนวนเต็มและจุดลอยตัว?