Как мы можем округлить число до ближайших 10 в php?Как округлить число до ближайшего 10?
Скажите, что у меня есть 23
, какой код я использовал бы, чтобы округлить его до 30
?
Как мы можем округлить число до ближайших 10 в php?Как округлить число до ближайшего 10?
Скажите, что у меня есть 23
, какой код я использовал бы, чтобы округлить его до 30
?
floor()
спустится.
ceil()
будет расти.
round()
пойдет в самое ближайшее время.
Разделите на 10, сделайте пополнение, затем умножьте на 10, чтобы уменьшить значимые цифры.
$number = ceil($input/10) * 10;
Редактировать: Я делал это так долго, но ответ TallGreenTree чист.
ceil - это работает: D !!! – tarnfeld
Ответ TallGreenTree не всегда округляет его. Этот ответ является наиболее правильным с использованием ceil() – Brandon
Ответ TallGreenTree поддерживает округление вверх/вниз с помощью третьего параметра (режима) round(). round ($ input, -1, PHP_ROUND_HALF_UP) –
ДИВ на 10 затем использовать CEIL затем сть 10
Мы можем "обмануть" через раунд с
$rounded = round($roundee/10) * 10;
Мы также можем избежать идти через точку деления с плавающей с
function roundToTen($roundee)
{
$r = $roundee % 10;
return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}
Редактировать: Я не знал (и это плохо документировано на si те), что round
теперь поддерживает «негативный» точность, так что вы можете легко использовать
$round = round($roundee, -1);
Редактировать снова: Если вы хотите всегда округлять вверх, вы можете попробовать
function roundUpToTen($roundee)
{
$r = $roundee % 10;
if ($r == 0)
return $roundee;
return $roundee + 10 - $r;
}
привет, это отлично работает - для этого вопроса, как я могу обойти UP? так от 23 до 30? – tarnfeld
round($number, -1);
Это будет round $ number до ближайшего 10. Вы также можете передать третью переменную, если необходимо, чтобы изменить режим округления.
Больше информации здесь: http://php.net/manual/en/function.round.php
раунд не то, что он хочет –
Можете ли вы обвинить их в предположении, что вопросник означал «округлить до ближайшего 10», когда вопрос сказал «округлить до ближайшего 10» дважды? – ceejayoz
Этот ответ был опубликован до того, как собеседник уточнил сам. Я просто подумал, что он не правильно округляет вопрос. – TallGreenTree
Попробуйте
round(23, -1);
Мой первый импульс был Google для «PHP математике», и я обнаружил, что есть основная функция математическая библиотека называется «круглые()» вероятно, это то, что вы хотите.
Попробуйте это:
ceil($roundee/10) * 10;
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30
Просто округлить до ближайшего 10, а затем добавить 10.
round($num, -1) + 10
это будет работать для примера, размещенного (от 23 до 30), но приведет к тому, что 27 округляется до 40. – squarecandy
Есть много anwers в этом вопросе, вероятно, все будет дайте вам ответ, который вы ищете. Но, как отмечает @TallGreenTree, для этого есть функция.
Но проблема ответа @TallGreenTree заключается в том, что он не округляется, округляется до ближайшего 10. Чтобы решить эту проблему, добавьте +5
к вашему номеру, чтобы округлить. Если вы хотите округлить, сделайте -5
.
Так в коде:
round($num + 5, -1);
Вы не можете использовать round mode
для округления, потому что только округляет дробь, а не целые числа.
Если вы хотите округлить до ближайшего 100
, вы используете +50
.
Это самый правильный ответ! –
Я действительно искал функцию, которая могла бы округлить до ближайшей переменной, и эта страница продолжалась в моих поисках. Поэтому, когда я, наконец, в конечном итоге написал эту функцию, я подумал, что отправлю ее сюда, чтобы другие могли ее найти.
Функция округляет до ближайшей переменной:
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
Кенни, ты лучший. Мне жаль, что у меня не было графического представления о том, как он округляется, поэтому я уверен, что он дает ожидаемые результаты в 100% случаев. Думаю, мне нужно будет провести некоторое тестирование. –
Есть ли способ изменить этот код, чтобы добавить третий параметр с круглым режимом HALF_UP/HALF_DOWN? –
Попробуйте это ...... перейдите в число, которое будет округлено, и оно округляется до ближайшего десятого. Надеюсь, что он elps ....
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';
Я хотел округлить до следующего номера в самом большом месте цифр (есть название для что?), поэтому я сделал следующую функцию (в php):
//Get the max value to use in a graph scale axis,
//given the max value in the graph
function getMaxScale($maxVal) {
$maxInt = ceil($maxVal);
$numDigits = strlen((string)$maxInt)-1; //this makes 2150->3000 instead of 10000
$dividend = pow(10,$numDigits);
$maxScale= ceil($maxInt/ $dividend) * $dividend;
return $maxScale;
}
Э-э, это не ближайшая * 10? –
ОК, округлите до 1 значащую цифру! haha – tarnfeld
Чтобы быть справедливым, в названии он говорит «round * up * number to ближайшее 10», хотя текст говорит «округлить» ... Я почти уверен, что он просит всегда округлить * вверх * до * next * 10. –