PHP floor() 函数

定义和用法

floor() 函数向下取整,返回不大于给定数字的最大整数(即向负无穷方向取整)。

提示:如需向上取整,请使用 ceil() 函数;如需四舍五入,请使用 round() 函数。

语法

floor(float $num): float
参数 描述
num 必需。规定要进行向下取整的数字。

返回值

返回不大于 num 的最大整数。返回值仍然是 float 类型,因为 float 的取值范围通常比 int 更大。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+

示例

示例 1:基本用法

<?php
echo floor(5.1) . "<br>";   // 5
echo floor(5.9) . "<br>";   // 5
echo floor(-5.1) . "<br>";  // -6 (因为 -6 ≤ -5.1)
echo floor(-5.9) . "<br>";  // -6
echo floor(5) . "<br>";     // 5 (整数保持不变)
?>

输出:

5
5
-6
-6
5

示例 2:处理负数

<?php
$values = [-3.7, -3.3, -3, 0, 3.3, 3.7];
foreach ($values as $value) {
    echo "floor($value) = " . floor($value) . "<br>";
}
?>

输出:

floor(-3.7) = -4
floor(-3.3) = -4
floor(-3) = -3
floor(0) = 0
floor(3.3) = 3
floor(3.7) = 3

示例 3:实际应用 - 价格计算(向下取整到分)

<?php
// 计算折扣后价格,并向下取整到分(保留两位小数)
function discountedPrice($price, $discountPercent) {
    $discounted = $price * (1 - $discountPercent / 100);
    // 向下取整到分:乘以100,floor,再除以100
    return floor($discounted * 100) / 100;
}

$originalPrice = 19.99;
$discount = 15; // 15% off
$finalPrice = discountedPrice($originalPrice, $discount);
echo "原价: $originalPrice<br>";
echo "折扣: $discount%<br>";
echo "折后价(向下取整到分): $finalPrice";
?>

输出:

原价: 19.99
折扣: 15%
折后价(向下取整到分): 16.99

说明:19.99 * 0.85 = 16.9915,floor后为16.99。

相关函数

注意事项

重要:
  • floor() 返回的类型是 float,即使传递的值是整数也是如此。如果需要 int 类型,可以手动转换:(int) floor($value)。
  • 由于浮点数精度问题,某些数字(例如 floor(0.1 + 0.7))可能返回 0 而不是 1?实际上 0.1+0.7=0.8,floor应为0,所以没问题。但需注意浮点误差可能使结果偏离预期。
  • 当数字足够大以至于整数部分超出 float 精度时,结果可能不精确。