Округление числа до значения с 2мя знаками после запятой в большую сторону

vladimircape

Новичок
Добрый день.
Кто подскажет, как сделать
К примеру есть
2.356 должно стать 2.36
или 2.344 но должно стать 2.35
чтобы всегда 2 знака, и округлялось в большую сторону
 

Pez!

Я твой сайт похапе писал
С., ceil же округляет до целого, а ему нужно флоат получить.
 

Dovg

Продвинутый новичок
Умножить на сто, ceil, разделить на сто.
 

vladimircape

Новичок
Вот может кому пригодится, можно и знаков после запятой сколько нужно устанавливать.
Только при 0 глючит
PHP:
function round_up ($value, $precision=2) 
                {
                $amt = explode(".", $value);
                if(strlen($amt[1]) > $precision) {
                    $next = (int)substr($amt[1],$precision);
                    $amt[1] = (float)(".".substr($amt[1],0,$precision));
                    if($next != 0) {
                    $rUp = "";
                    for($x=1;$x<$precision;$x++) $rUp .= "0";
                    $amt[1] = $amt[1] + (float)(".".$rUp."1");
                    }
                }
                else {
                    $amt[1] = (float)(".".$amt[1]);
                }
                return $amt[0]+$amt[1];
                }
 

E-Not

Новичок
2 vladimircape, мозг чуть не взорвался))) Зачем всё ТАК усложнять???

Если нада просто обрезать после зарятой 2 знака то:

PHP:
$result = round($val * 100) / 100;
Где $val - округляемое значение.

если нужно округлять с учётом правил математики, то:

PHP:
$result = round($val , 2);
 

Dovg

Продвинутый новичок
E-Not
слово сочетание "в большую сторону" как бы намекает.
 

radioheaded

PHP нуб
Вот может кому пригодится, можно и знаков после запятой сколько нужно устанавливать.
Только при 0 глючит
PHP:
function round_up ($value, $precision=2) 
                {
                $amt = explode(".", $value);
                if(strlen($amt[1]) > $precision) {
                    $next = (int)substr($amt[1],$precision);
                    $amt[1] = (float)(".".substr($amt[1],0,$precision));
                    if($next != 0) {
                    $rUp = "";
                    for($x=1;$x<$precision;$x++) $rUp .= "0";
                    $amt[1] = $amt[1] + (float)(".".$rUp."1");
                    }
                }
                else {
                    $amt[1] = (float)(".".$amt[1]);
                }
                return $amt[0]+$amt[1];
                }
Вот после такого и жалуются потом, что PHP это говноязык, на котором можно писать только говнокод. Вам сразу указали верный ответ, а вы все равно фигней заниматься решили.
 

vladimircape

Новичок
Вот после такого и жалуются потом, что PHP это говноязык, на котором можно писать только говнокод. Вам сразу указали верный ответ, а вы все равно фигней заниматься решили.
Извините уже меня, чистоплюй :)
Этот пример я взял на офицальном сайте в комментах
 

С.

Продвинутый новичок
Тагир, не позорься, открой уже учебник математики и посмотри, что такое округление в большую сторону (с избытком, ceil) или в меньшую (с недостатком, floor).
 
Сверху