Округление до 0.5 PHP

  • 10 350
  • Комментарии: 6
Ребёнок в очках

Часто бывают случаи, когда необходимо округлить число не до целого, а до половины целого. Например, 1,3 нужно округлить до 1.5. Такое случается редко, но всё же бывают случаи когда может понадобиться именно такое округление, в частности, я столкнулся с этим, когда мне нужно было вывести рейтинг в виде звёздочек с шагом 0.5, а данные хранились с шагом 0.1. Следующий код поможет вам округлить число до 0.5

/**
* Округление числа до 0.5. Например, если 1.2, то округлится до 1
* Если 1.5 то ничего не произойдёт, а если 1.6 то до 2
* @param $x
* @return float
*/
function roundToHalf($x)
{
    return ceil($x/0.5)*0.5;
}

echo roundToHalf(1.2) // Выведет 1
echo roundToHalf(1.1) // Выведет 1
echo roundToHalf(1.9) // Выведет 2

Как это работает?

Допустим, нам надо округлить 1.3 до 1.5. Для этого делаем следующее:

  1. 1.3 делим на 0.5, получаем: 1.3/0.5 = 2.6
  2. Округляем 2.6 до 3 (всегда округляем в большую сторону)
  3. Умножаем 3 на 0.5, получаем: 3*0.5 = 1.5
  4. Результат: 1.5
Понравилась статья? Оцени её!
1 звезда2 звезды3 звезды4 звезды5 звезд (всего голосов: 10, средняя оценка: 5,00 максимальная 5)
Загрузка...
6 комментариев
  • des пишет:

    спасибо

  • des пишет:

    и конечно очепятка у вас
    /**
    * Округление числа до 0.5. Например, если 1.2, то округлиться до 1
    * Если 1.5 то ничего не произойдёт, а если 1.6 то до 2
    * @param $x
    * @return float
    */
    function roundToHalf($x)
    {
    return ceil($x/0.5)*0.5;
    }

    echo roundToHalf(1.4) // Выведет 1.5
    echo roundToHalf(1.3) // Выведет 1.5
    echo roundToHalf(1.9) // Выведет 2

    • Борис Заболотских пишет:

      Благодарю! Поправил)

      • Александр пишет:

        Вы так и не исправили!!!!!!
        Вот это:

        echo ceil(1.2) // Выведет 1
        echo ceil(1.1) // Выведет 1
        echo ceil(1.9) // Выведет 2

        замените на:

        echo roundToHalf(1.2); // Выведет 1
        echo roundToHalf(1.1); // Выведет 1
        echo roundToHalf(1.9); // Выведет 2

        «des» вам уже писал выше.

        Получается, что Вы людей в заблуждение вводите — даже этой строчкой «echo ceil(1.2)»

  • Марина пишет:

    Добрый день!
    Принцип округления взят откуда? Ведь если «Округляем 2.6 до 3 (всегда округляем в большую сторону)», то всегда будет округление и изначальной цифры в большую сторону. Будь то 1,1; 1,2; 1,7 и т.д.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *