一尘不染

在PHP中四舍五入到最接近的五倍

php

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

我已经尝试过该round()功能:

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

它返回 90, 但我要 95

谢谢。


阅读 322

收藏
2020-05-26

共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;
}
2020-05-26