|
|
|
| Функция round позволяет округлять числа, устанавлявая количество знаков после запятой или количество нулей в целом числе.
А каким образом можно округлять дробные числа до двух, до пяти, до двадцати, до пятидесяти? | |
|
|
|
|
|
|
|
для: Владимир55
(07.12.2012 в 13:21)
| | Можно примерчик? | |
|
|
|
|
|
|
|
для: DJ Paltus
(07.12.2012 в 13:28)
| | Округляем до пяти:
Имеется 1003 Должно быть после округления 1005
Округляем до двадцати:
Имеется 157 Должно быть после округления 160
Округление до пятидесяти:
Имеется 157 Должно быть после округления 150
Сами правила округления, используемые в round, и в этой задаче подходят. | |
|
|
|
|
|
|
|
для: Владимир55
(07.12.2012 в 13:40)
| |
<?php
function my_round($arg, $base){
//arg - округляемое число, $base - "округлитель"
$ost = $arg%$base; //вычисляем остаток от деления
$chast = floor($arg/$base); //находим количество целых округлителей в аргументе
if($ost >= $base/2) $rez = ($chast+1) * $base; //выбираем направление округления
else $rez = $chast * $base;
return $rez;
}
echo my_round(1003, 5); //1005
?>
|
| |
|
|
|
|
|
|
|
для: DJ Paltus
(07.12.2012 в 13:58)
| | Прекрасно работает, спасибо!
Особая благодарность за комментарий в коде. | |
|
|
|
|
|
|
|
для: Владимир55
(07.12.2012 в 14:14)
| |
<?php
function customRound($number, $base)
{
if ($base == 0)
return $number;
$mod = $number % $base;
return $number - $mod + round($mod / $base) * $base;
}
echo customRound(1003, 5);
|
| |
|
|
|
|
|
|
|
для: Drago
(07.12.2012 в 19:53)
| | К сожалению, эта функция "спотыкается" на дробях: echo customRound(1003.3, 5); дает 1005.3 | |
|
|
|
|
|
|
|
для: Владимир55
(24.02.2013 в 12:26)
| | А если сделать так:
<?php
$x = 1003.9;
$d = 5;
echo (round ($x/$d)) * $d;
|
Вроде бы, тоже работает. Или в этом коде есть какой-то дефект, который я не вижу? | |
|
|
|
|
|
|
|
для: Владимир55
(24.02.2013 в 13:36)
| | Отличный вариант, дефекта нет. | |
|
|
|