在 PHP 中向上舍入为最接近的 5 的倍数

2022-08-30 08:40:27

我想要一个php函数,当用52调用它时返回55。

我试过了这个功能:round()

echo round(94, -1); // 90

它返回90,但我想要95

谢谢。


答案 1

这可以通过多种方式完成,具体取决于您首选的舍入约定:

1. 四舍五入到下一个 5 的倍数,排除当前数字

行为: 50 输出 55, 52 输出 55

function roundUpToAny($n,$x=5) {
    return round(($n+$x/2)/$x)*$x;
}

2. 四舍五入到最接近的 5 的倍数,包括当前数字

行为: 50 输出 50, 52 输出 55, 50.25 输出 50

function roundUpToAny($n,$x=5) {
    return (round($n)%$x === 0) ? round($n) : round(($n+$x/2)/$x)*$x;
}

3. 向上舍入为整数,然后舍入到最接近的 5 的倍数

行为: 50 输出 50, 52 输出 55, 50.25 输出 55

function roundUpToAny($n,$x=5) {
    return (ceil($n)%$x === 0) ? ceil($n) : round(($n+$x/2)/$x)*$x;
}

答案 2
  1. 除以 5
  2. round()(或者如果你想总是四舍五入ceil())
  3. 乘以 5。

值 5(分辨率/粒度)可以是任何内容 — 在步骤 1 和 3 中都已替换

综上所述:

    $rounded_number = ceil( $initial_number / 5 ) * 5

推荐