#php #rounding
#php #округление
Вопрос:
В PHP я хочу округлять числа на основе предоставленного значения.
- Если значение больше 30, я хочу округлить числа до ближайшего 4,95 или 9,95
- Если значение находится между 10 и 30, я хочу округлить числа до ближайшего 2.45 или 4.95 или 7.45 или 9.95
- Если значение меньше 10, я хочу округлить числа до ближайшего .45 или .95
- Если значение меньше 1, я хочу округлить числа до ближайшего .05 или .10
Однако значение не может быть 0 или ниже нуля и всегда округляется в большую сторону, когда оно близко к нулю (например, оно становится не равным нулю, а 0,05).
У меня есть этот код для округления до ближайшего 4,95 или 9,95:
(ROUND($number / 5, 0) * 5) - 0.05
У меня есть этот код для округления до ближайшего .45 или .95:
(ROUND($number * 2, 0) / 2) - 0.05
Я действительно не знаю, как достичь вышеуказанного. У кого-нибудь есть идеи по этому поводу?
Ответ №1:
Если я хорошо понимаю вашу проблему, это решение должно работать :
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);