如何将数字四舍五入到最接近的 .45 或 .95?

How to round numbers to the closest .45 or .95?

在 PHP 中,我想根据提供的值对数字进行舍入。

但是该值不能为 0 或小于零,并且在接近于零时始终向上舍入(因此它不会变为零,而是变为 0.05,例如)。

我有这个代码可以四舍五入到最接近的 4.95 或 9.95:

(ROUND($number / 5, 0) * 5) - 0.05

我有这段代码可以四舍五入到最接近的 .45 或 .95:

(ROUND($number * 2, 0) / 2) - 0.05

虽然我真的不知道如何实现上述目标。有人知道吗?

如果我很了解你的问题,这个解决方案应该有效:

if ($value > 30)
    $roudedValue = 5 * round($value / 5);
else if ($value >= 10)
    $roudedValue = 2.5 * round($value / 2.5);
else if ($value > 1)
    $roudedValue = 0.5 * round($value / 0.5);
else 
    $roudedValue = 0.1 * round($value / 0.1);