Как округлять оценки звезд до ближайших значений 0.25, 0.5 и 0.75?

Как изменить код, чтобы переменная $round корректно обрабатывала не только .5, но и .25 и .75?
  • 17 апреля 2024 г. 15:20
Ответы на вопрос 2
Для округления оценок звезд до ближайших значений 0.25, 0.5 и 0.75 можно воспользоваться следующим методом:

1. Вычислить остаток от деления значения оценки на 1 (например, для оценки 3.45: остаток = 3.45 % 1 = 0.45).
2. Если остаток от деления на 1 находится в промежутке от 0.125 до 0.375, округлить оценку до ближайшего значения 0.25.
3. Если остаток от деления на 1 находится в промежутке от 0.375 до 0.625, округлить оценку до ближайшего значения 0.5.
4. Если остаток от деления на 1 находится в промежутке от 0.625 до 0.875, округлить оценку до ближайшего значения 0.75.

Пример кода на PHP:

```php
$rating = 3.45;
$remainder = $rating % 1;

if ($remainder >= 0.125 && $remainder < 0.375) {
    $round = floor($rating) + 0.25;
} elseif ($remainder >= 0.375 && $remainder < 0.625) {
    $round = floor($rating) + 0.5;
} elseif ($remainder >= 0.625 && $remainder < 0.875) {
    $round = floor($rating) + 0.75;
} else {
    $round = round($rating);
}

echo 'Округленная оценка: ' . $round;
```

Чтобы изменить код так, чтобы переменная $round корректно обрабатывала не только .5, но и .25 и .75, можно использовать условия для проверки каждого из этих случаев. Например:

```php
if ($remainder == 0.25) {
    $round = floor($rating) + 0.25;
} elseif ($remainder == 0.5) {
    $round = floor($rating) + 0.5;
} elseif ($remainder == 0.75) {
    $round = floor($rating) + 0.75;
} else {
    $round = round($rating);
}

echo 'Округленная оценка: ' . $round;
```
что бы не было вот такого кошмара ceil и floor , либо еще более подробно читаем документацию про round , в частности про его третий аргумент mode
Похожие вопросы