floor(float $num): float
| 参数 | 描述 |
|---|---|
num |
必需。规定要进行向下取整的数字。 |
返回不大于 num 的最大整数。返回值仍然是 float 类型,因为 float 的取值范围通常比 int 更大。
<?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
<?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
<?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 精度时,结果可能不精确。