Hướng dẫn dùng floor. trong PHP

float ceil( float value )
float floor( float value )
float round( float value [, int precision] )

Một tình huống phổ biến là bạn muốn làm tròn số trong PHP, trong trường hợp đó bạn cần sử dụng một trong các hàm làm tròn lựa chọn của PHP: ceil(), floor()round().

Mình xin được giới thiệu tới các bạn trong bài viết này.

ceil() và floor()

Cả ceil()floor() chỉ lấy một tham số – số để làm tròn. ceil() lấy số và làm tròn nó thành số nguyên gần nhất trên giá trị hiện tại của nó, trong khi floor() làm tròn nó thành số nguyên gần nhất dưới giá trị hiện tại của nó. Hãy xem ví dụ dưới đây:

Sau khi thực thi đoạn mã trên, $ceiled sẽ là 5 và $floored sẽ là 4.

round()

Hàm khác có sẵn là round(), nhận hai tham số – số để làm tròn và số chữ số thập phân để làm tròn. Nếu một số nằm đúng nửa khoảng cách giữa hai số nguyên, round() sẽ luôn làm tròn.

Như bạn có thể thấy, 4,5 được làm tròn thành 5, trong khi 4,4999 được làm tròn thành 4.

Dòng bốn ($d) có tham số thứ hai được sử dụng, điều này cho thấy rất dễ làm tròn đến một số chữ số thập phân nhất định.

Lưu ý rằng ở dòng năm ($e), chúng ta nhận được 4.1235 khi làm tròn đến bốn chữ số thập phân, vì PHP xem xét thêm một chữ số để quyết định chữ số cuối cùng. Nghĩa là, nếu số của chúng ta là 4.12344, làm tròn đến bốn chữ số thập phân sẽ cho chúng ta 4.1234, nhưng vì chữ số thứ năm là số 5, luôn được làm tròn, thay vào đó chúng ta thấy mình có 4.1235.

Ví dụ cuối cùng ($f), là một tình huống phổ biến mà những người sử dụng round() gặp phải.

Hãy tưởng tượng bạn đang tổ chức một chuyến đi cắm trại lớn và có 50 người đã đăng ký.

Bạn cần tính xem bạn cần thuê bao nhiêu lều để cắm trại, vì vậy bạn lấy số người là 50 và chia cho sức chứa tối đa của một chiếc lều cắm trại là 8 => (50/8 = 6.25), sau đó làm tròn số để có được một số nguyên và bạn thấy kết quả là 6.

Vấn đề ở đâu? Kết quả thực tế của 50/8 là 6,25 – bạn cần sáu chiếc lều để cho 50 người nghỉ ngơi và bạn sẽ chỉ đặt 6 cái vì round() làm tròn thành 6 thay vì 7 vì nó gần hơn.

Vì bạn không thể thuê sáu chiếc lều rưỡi (6.5), bạn phải làm gì? Giải pháp rất đơn giản: trong những tình huống như thế này, bạn sử dụng ceil(). Cả ba hàm làm tròn đều hữu ích theo đúng nghĩa của chúng, vì vậy hãy nhớ cố gắng ghi nhớ tất cả chúng.

Tài liệu tham khảo

» Hàm FLOOR
» Hàm ROUND
» Hàm CEIL

Ví dụ tổng hợp:

//round()

echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06
 
echo round(9.5, 0, PHP_ROUND_HALF_UP);   // 10
echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10
echo round(9.5, 0, PHP_ROUND_HALF_ODD);  // 9
 
echo round(8.5, 0, PHP_ROUND_HALF_UP);   // 9
echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_ODD);  // 9    
 
/* Using PHP_ROUND_HALF_UP with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_UP);   //  1.6
echo round( 1.54, 1, PHP_ROUND_HALF_UP);   //  1.5
echo round(-1.55, 1, PHP_ROUND_HALF_UP);   // -1.6
echo round(-1.54, 1, PHP_ROUND_HALF_UP);   // -1.5
 
/* Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_DOWN); //  1.5
echo round( 1.54, 1, PHP_ROUND_HALF_DOWN); //  1.5
echo round(-1.55, 1, PHP_ROUND_HALF_DOWN); // -1.5
echo round(-1.54, 1, PHP_ROUND_HALF_DOWN); // -1.5
 
/* Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_EVEN); //  1.6
echo round( 1.54, 1, PHP_ROUND_HALF_EVEN); //  1.5
echo round(-1.55, 1, PHP_ROUND_HALF_EVEN); // -1.6
echo round(-1.54, 1, PHP_ROUND_HALF_EVEN); // -1.5
 
/* Using PHP_ROUND_HALF_ODD with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_ODD);  //  1.5
echo round( 1.54, 1, PHP_ROUND_HALF_ODD);  //  1.5
echo round(-1.55, 1, PHP_ROUND_HALF_ODD);  // -1.5
echo round(-1.54, 1, PHP_ROUND_HALF_ODD);  // -1.5

//floor()

echo floor(4.3);   // 4
echo floor(9.999); // 9
echo floor(-3.14); // -4

//ceil()

echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3