Как округлить числа до ближайшего .45 или .95?

#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);