การปัดเศษของตัวเลข

Lua:
การปัดเศษของตัวเลข

วิธีการ:

-- การปัดเศษตัวเลขใน Lua ไม่มีให้ตั้งแต่แรก, แต่คุณสามารถกำหนดฟังก์ชันได้:

function round(num)
    return num >= 0 and math.floor(num + 0.5) or math.ceil(num - 0.5)
end

print(round(3.5))  -- 4
print(round(2.3))  -- 2
print(round(-1.6)) -- -2

-- เพื่อปัดเศษไปยังตำแหน่งทศนิยมที่เฉพาะเจาะจง:
function round(num, decimalPlaces)
    local mult = 10^(decimalPlaces or 0)
    return math.floor(num * mult + 0.5) / mult
end

print(round(3.14159, 2)) -- 3.14
print(round(1.98765, 3))  -- 1.988

ลงลึก

Lua ไม่มีฟังก์ชัน round มาให้ตั้งแต่แรกไม่เหมือนกับภาษาอื่นๆ โดยปกติแล้วคุณต้องเขียนของคุณเองหรือใช้ไลบรารีของบุคคลที่สาม วิธีแก้ปัญหาทั่วไปมักจะพึ่งพา math.floor() สำหรับการปัดลงและ math.ceil() สำหรับการปัดขึ้น, ควบคู่ไปกับการเพิ่มหรือลบ 0.5 ก่อนทำดังกล่าว, ขึ้นอยู่กับเครื่องหมายของตัวเลข

ทางเลือกในการสร้างฟังก์ชันของคุณเองรวมถึงไลบรารี เช่น “lua-users wiki” หรือ “Penlight” แต่ละอันมีข้อดีและข้อเสียของตัวเอง เช่น คุณสมบัติเพิ่มเติมหรือโหลดมากขึ้น

ภายใน, ฟังก์ชันเหล่านี้มักจะทำงานโดยใช้ประโยชน์จากวิธีที่คอมพิวเตอร์เก็บตัวเลขจุดลอยตัว การเพิ่ม 0.5 เข้าไปในจำนวนลอยตัวบวกที่คุณต้องการปัดเศษจะทำให้มันข้ามเหนือขีดความสามารถของค่าจำนวนเต็มถัดไป, ดังนั้นเมื่อคุณใช้ math.floor() มันจะปัดลงไปยังจำนวนเต็มที่ใกล้ที่สุด

ดูเพิ่มเติม