Часто бывают случаи, когда необходимо округлить число не до целого, а до половины целого. Например, 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.3 делим на 0.5, получаем: 1.3/0.5 = 2.6
- Округляем 2.6 до 3 (всегда округляем в большую сторону)
- Умножаем 3 на 0.5, получаем: 3*0.5 = 1.5
- Результат: 1.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.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)»
Точно! У «des’а» я обратил внимание только на опечатку «тся/ться».
Добрый день!
Принцип округления взят откуда? Ведь если «Округляем 2.6 до 3 (всегда округляем в большую сторону)», то всегда будет округление и изначальной цифры в большую сторону. Будь то 1,1; 1,2; 1,7 и т.д.