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