JavaScript:
การปัดเศษของตัวเลข
วิธีการ:
นี่คือวิธีการปัดเศษตัวเลขใน JavaScript โดยใช้ Math.round(), Math.ceil(), และ Math.floor():
let originalNumber = 2.567;
let roundedDown = Math.floor(originalNumber); // 2
let roundedUp = Math.ceil(originalNumber); // 3
let rounded = Math.round(originalNumber); // 3 (เนื่องจาก .567 มากกว่า .5)
console.log(roundedDown); // พิมพ์: 2
console.log(roundedUp); // พิมพ์: 3
console.log(rounded); // พิมพ์: 3
เพื่อกำหนดจำนวนทศนิยมให้คงที่, ใช้ toFixed():
let twoDecimals = originalNumber.toFixed(2); // "2.57" (คืนค่าเป็นสตริง)
console.log(twoDecimals); // พิมพ์: "2.57"
แปลงสตริงกลับเป็นตัวเลขด้วยเครื่องหมายบวกหนึ่งตัวหรือ Number():
let numberAgain = +twoDecimals; // 2.57
console.log(numberAgain); // พิมพ์: 2.57
ศึกษาลึกลงไป
การปัดเศษตัวเลขไม่ใช่เรื่องใหม่; มันเก่าแก่เท่ากับตัวเลขเอง ใน JavaScript, Math.round() ใช้วิธี “round half up” ในการตัดสิน: ถ้าส่วนทศนิยมเป็น 0.5, จะปัดขึ้นไปยังตัวเลขที่ใกล้เคียงที่สุด
หากต้องการควบคุมมากขึ้น, toFixed() อาจเป็นทางออกสำหรับคุณ, แต่จำไว้ว่า, มันคืนค่าเป็นสตริง การแปลงกลับเป็นตัวเลขอาจเป็นขั้นตอนเพิ่มเติมแต่ช่วยให้คุณยังคงทำงานกับประเภทตัวเลขได้
มีทางเลือกอื่นหรือไม่? ไลบรารีเช่น lodash นำเสนอ _.round(number, [precision=0]) เพื่อการควบคุมที่มีนัยสำคัญมากขึ้น หรือบริการ Intl.NumberFormat ให้รูปแบบการจัดรูปแบบความแม่นยำสูง ไม่ใช่แค่การปัดเศษเท่านั้น
พูดถึงความแม่นยำ, ระวังถึงปัญหาของจุดลอยตัวใน JavaScript 0.1 + 0.2ไม่เท่ากับ0.3` สมบูรณ์เนื่องจากวิธีที่ตัวเลขถูกเก็บ บางครั้ง, การปัดเศษอาจจำเป็นในการแก้ไขข้อผิดพลาดจากจุดลอยตัว
ดูเพิ่มเติม
- เอกสารการคำนวณของ Mozilla: MDN Web Docs
- การปัดเศษทางการเงินด้วย
Intl.NumberFormat: ECMAScript Internationalization API - การปัดเศษด้วย
lodash: Lodash Docs