Как мы можем округлить число до ближайших 10 в php?
У меня 23
, какой код я бы использовал, чтобы округлить его до 30
?
floor()
будет снижаться.
ceil()
будет расти.
round()
пойдет по ближайшему по умолчанию.
Разделите на 10, сделайте ceil, затем умножьте на 10, чтобы уменьшить значимые цифры.
$number = ceil($input / 10) * 10;
Редактирование: я делал это так долго … но ответ TallGreenTree чище.
round($number, -1);
Это будет округлено от $ до ближайшего 10. Вы также можете передать третью переменную, чтобы изменить режим округления.
Подробнее здесь: http://php.net/manual/en/function.round.php
Я действительно искал функцию, которая могла бы округляться до ближайшей переменной, и эта страница продолжалась в моих поисках. Поэтому, когда я, наконец, в конечном итоге написал эту функцию, я подумал, что отправлю ее сюда, чтобы другие могли ее найти.
Функция будет округлена до ближайшей переменной:
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
div на 10, затем используйте ceil, затем mult на 10
В этом вопросе много ответчиков, вероятно, все даст вам ответ, который вы ищете. Но, как отмечает @TallGreenTree, для этого есть функция.
Но проблема ответа @TallGreenTree заключается в том, что она не округляется, она округляется до ближайшего 10. Чтобы решить эту проблему, добавьте +5
к вашему номеру, чтобы округлить. Если вы хотите округлить, сделайте -5
.
Итак, в коде:
round($num + 5, -1);
Вы не можете использовать round mode
для округления, потому что это только округляет фракции, а не целые числа.
Если вы хотите округлить до ближайших 100
, вы используете +50
.
Пытаться
round(23, -1);
Мы можем «обманывать» через раунд с помощью
$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; }
$value = 23; $rounded_value = $value - ($value % 10 - 10); //$rounded_value is now 30
Попробуй это:
ceil($roundee / 10) * 10;
Просто округлите до ближайших 10, а затем добавьте 10.
round($num, -1) + 10
Мой первый импульс состоял в том, чтобы google для «php math», и я обнаружил, что есть основная математическая функция библиотеки, называемая «round ()», которая, вероятно, является тем, что вы хотите.
Попробуйте это …… пропустите номер, который будет округлен, и он округляется до ближайшей десятой. Надеюсь, это поможет …
раунд ($ num, 1);
Для людей, которые хотят сделать это с использованием необработанного SQL, без использования php, java, python и т. Д. SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';
SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';