GORAGOD.com

ความแตกต่างระหว่างฟังก์ชั่น round() floor() และ ceil()

ฟังก์ชั่น round() floor() และ ceil() จะให้ผลลัพท์แบบมีการปัดเศษทั้ง 3 ฟังก์ชั่น โดย
  • floor() จะมีการปัดเศษลงเสมอ และ
  • ceil() จะทำตรงข้ามกับ floor() คือจะมีการปัดเศษขึ้นเสมอ
  • round() จะมีการปัดเศษลงหากหลักสุดท้ายมีค่าน้อยกว่า 5 และปัดเศษขึ้นหากหลักสุดท้ายมีค่าตั้งแต่ 5 ขึ้นไป (ตัวฟังก์ชั่นสามารถกำหนดหลักที่ต้องการได้ ให้ศึกษาเพิ่มเติมจากคู่มือของ PHP)
  floor() ceil() round()
3.9 3 4 4
3.5 3 4 4
3.1 3 4 3
3 3 3 3
-3.1 -4 -3 -3
-3.5 -4 -3 -4
-3.9 -4 -3 -4
ตัวอย่างการนำไปใช้งาน
<?php
if (floor($time) == 3) {
    // do some thing
}

การเปรียบเทียบเวลา หากต้องการให้เวลาอยู่ในช่วงที่กำหนดเท่านั้น ต้องใช้ floor() เช่นในตัวอย่าง เวลาตั้งแต่ 3.00 ถึง 3.59 เมื่อผ่าน floor() จะมีค่าเท่ากับ 3 เสมอ (ถ้าใช้ ฟังก์ชั่นอื่นจะถูกปัดเป็น 4)
<?php
// จำนวนรายการทั้งหมด
$count = 30;
// จำนวนรายการต่อหน้า
$list_per_page = 10;
// จำนวนหน้า
$pages = ceil($count / $list_per_page); // 3

ในการหาจำนวนหน้า เช่น การแบ่งหน้า จะต้องใช้ฟังก์ชั่น ceil() ดังตัวอย่าง สมมุติมีจำนวนทั้งหมด 30 รายการ หารด้วยหน้าละ 10 รายการจะได้ 3 หน้าพอดี และหากมีรายการเพิ่มเป็น 31 รายการ จะได้ว่า 31/10=3.1 ซึ่งจะได้ผลลัทธ์เป็น ceil(31/10) = 4 หากใช้ฟังก์ชั่นอื่น จำนวนหน้าจะได้เพียง 3 หน้า ซึ่งจะทำให้รายการที่ 31 ไม่ถูกแสดงผล
<?php
$price = round(3.90); // 4
$price = round(3.10); // 3

ตัวอย่างการใช้ฟังก์ชั่น round() เช่นในการคิดเงิน ซึ่งโดยทั่วไปมักจะมีการปัดเศษให้เศษสตางค์ตั้งแต่ 0.50 สตางขึ้นไป ปัดขึ้นอีก 1 บาท และเศษสตางค์ที่น้อยกว่า 50 สตางค์ให้ปัดลง (ไม่คิดเศษสตางค์)