Округление дробей

SaBo

Новичок
Округление дробей

Вопрос следующий: я имею на входе дробь с неограниченным количество знаков после запятой.
Мне нужно округлить эту дробь в бОльшую сторону с точностью до двух знаков.
Казалось бы, всё просто:

PHP:
round(1.454523, 2, PHP_ROUND_HALF_UP);
Но вот не хочет принимать параметр PHP_ROUND_HALF_UP . Или это годится только для PHP 5.3?

P.S. Пришлось изобретать такую фигню:

PHP:
  public function getCommission()
  {
	if($this->amount <= 0.01)
	  return 0.01;
	$commission = $this->amount / 100 * $this->commission;
	if(!preg_match('/^[0-9]+[\.][0-9]{2,2}$/', $commission))
	{
	  if(preg_match('/^([0-9]+[\.][0-9]{2,2})[0-9]{1,}$/', $commission, $matches))
	  {
		$commission = $matches[1] + 0.01;
	  }
	}
	return $commission;
  }
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
PHP_ROUND_HALF_UP - это относится только к цифре 5
т.е. 1.425 станет 1.43

в общем, я бы умножал на 100, делал сeil и делил на 100
 

damngood

Мозг был, но ушел...
PHP_ROUND_HALF_UP - действие округления по-умолчанию.

Я бы сделал так:
PHP:
sprintf("%01.2f", round(round(round(round(1.4544453, 5), 4), 3), 2));
-~{}~ 12.11.09 14:25:

Допустив малую вероятность того, что у тебя там в дроби нет 6 цифр 4 подряд
 

SaBo

Новичок
Автор оригинала: varan
PHP_ROUND_HALF_UP - это относится только к цифре 5
т.е. 1.425 станет 1.43
Не совсем понял... Что значит относится только к цифре 5?
Мне нужно следующее:
1.425 -> 1.43
6.3815 -> 6.39
9.35733 -> 9.36
4.67 -> 4.67
3.8 -> 3.8
9 -> 9

Неужели в PHP нет стандартной функции для такого округления?

Автор оригинала: varan
в общем, я бы умножал на 100, делал сeil и делил на 100
Спс за совет ))

-~{}~ 12.11.09 16:25:

Автор оригинала: damngood
PHP_ROUND_HALF_UP - действие округления по-умолчанию.

Я бы сделал так:
PHP:
sprintf("%01.2f", round(round(round(round(1.4544453, 5), 4), 3), 2));
-~{}~ 12.11.09 14:25:

Допустив малую вероятность того, что у тебя там в дроби нет 6 цифр 4 подряд
Нет, допускать вероятность не хотелось бы ))
 
Сверху