Как округлить число до 10? - PullRequest
       48

Как округлить число до 10?

79 голосов
/ 25 октября 2009

Как мы можем округлить число с точностью до 10 в php?

Скажите, у меня есть 23, какой код я бы использовал для округления до 30?

Ответы [ 16 ]

178 голосов
/ 25 октября 2009

floor() понизится.

ceil() будет идти вверх.

round() перейдет к ближайшему по умолчанию.

Разделите на 10, сделайте ceil, затем умножьте на 10, чтобы уменьшить значащие цифры.

$number = ceil($input / 10) * 10;

Редактировать: я так долго этим занимался ... но ответ TallGreenTree чище.

156 голосов
/ 25 октября 2009
round($number, -1);

Это округляет число $ до ближайшего 10. Вы также можете передать третью переменную, если необходимо изменить режим округления.

Подробнее здесь: http://php.net/manual/en/function.round.php

12 голосов
/ 15 августа 2014

Я действительно искал функцию, которая могла бы округляться до ближайшей переменной, и эта страница продолжала появляться в моих поисках. Поэтому, когда я, наконец, сам написал эту функцию, я решил опубликовать ее здесь, чтобы другие могли ее найти.

Функция округляется до ближайшей переменной:

function roundToTheNearestAnything($value, $roundTo)
{
    $mod = $value%$roundTo;
    return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}

Этот код:

echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';

Будет выводить:

1230
1235
1230
1169
9 голосов
/ 16 июня 2014

В этом вопросе много вопросов, вероятно, все они дадут вам ответ, который вы ищете. Но, как упоминает @TallGreenTree, для этого есть функция.

Но проблема ответа @TallGreenTree в том, что он не округляется, округляется до ближайшего 10. Чтобы решить эту проблему, добавьте +5 к своему номеру, чтобы округлить. Если вы хотите округлить, сделайте -5.

Так в коде:

round($num + 5, -1);

Вы не можете использовать round mode для округления, потому что это округляет только дроби, а не целые числа.

Если вы хотите округлить до ближайшего 100, вы должны использовать +50.

7 голосов
/ 25 октября 2009

делим на 10, затем используем ceil, затем мульт на 10

http://php.net/manual/en/function.ceil.php

2 голосов
/ 07 февраля 2012
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30
2 голосов
/ 25 октября 2009

Попробуйте

round(23, -1);

2 голосов
/ 25 октября 2009

Мы можем "обмануть" через раунд с

$rounded = round($roundee / 10) * 10;

Мы также можем избежать деления с плавающей запятой с помощью

function roundToTen($roundee)
{
  $r = $roundee % 10;
  return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}

Редактировать: я не знал (и это не очень хорошо задокументировано на сайте), что round теперь поддерживает "отрицательную" точность, так что вы можете легче использовать

$round = round($roundee, -1);

Изменить еще раз: Если вы всегда хотите округлить, вы можете попробовать

function roundUpToTen($roundee)
{
  $r = $roundee % 10;
  if ($r == 0)
    return $roundee;
  return $roundee + 10 - $r;    
}
1 голос
/ 11 мая 2013

Просто округлите до 10 и добавьте 10.

round($num, -1) + 10
1 голос
/ 25 октября 2009

Попробуйте это:

ceil($roundee / 10) * 10;
...