хорошо, тогда округлите до 1 значащей цифры! ха-ха
tarnfeld
3
Чтобы быть справедливым, в названии, он говорит , что «круглый вверх рядом с точностью до 10», даже если текст говорит «округлить» ... Я уверен , что он просит , чтобы всегда круглый вверх к следующему 10.
Ответ TallGreenTree не всегда округляет его вверх. Этот ответ является наиболее правильным с использованием ceil ()
Брэндон,
1
Ответ TallGreenTree поддерживает округление вверх / вниз с использованием третьего параметра (режима) round (). round ($ input, -1, PHP_ROUND_HALF_UP)
Дарен Швенке
4
@DarenSchwenke, этот третий параметр не совсем работает, как вы предполагаете, он контролирует только случай ровно посередине между интервалами. (15,-1, PHP_ROUND_HALF_UP); // 20,(14,-1, PHP_ROUND_HALF_UP); // 10
Арт
168
round($number,-1);
Это округлит число $ до ближайшего 10. Вы также можете передать третью переменную, если необходимо изменить режим округления.
Можно ли их винить в том, что они предположили, что вопрошающий имел в виду «округлить до ближайших 10», когда в вопросе дважды говорилось «округлить до ближайших 10»?
ceejayoz,
Этот ответ был опубликован до того, как спрашивающий пояснил себя. Я просто подумал, что он неправильно ответил в вопросе.
Уилл Барретт,
12
TallGreenTree правильно. Вы можете установить режим округления с помощью третьего аргумента: «mode One из PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN или PHP_ROUND_HALF_ODD.»
d -_- b
13
Это не дает правильного результата. 23будет, 20а не 30потому, что он всегда будет округляться до ближайшего 10. Режим округления не поможет, так как это только половина округления после x..
Timo002
1
К сожалению, ceil () и floor () еще не имеют параметра точности.
squarecandy
15
На самом деле я искал функцию, которая могла бы округлить до ближайшей переменной, и эта страница продолжала появляться в моих поисках. Поэтому, когда я наконец закончил писать функцию сам, я подумал, что опубликую ее здесь, чтобы другие могли найти.
Функция округлится до ближайшей переменной:
function roundToTheNearestAnything($value, $roundTo){
$mod = $value%$roundTo;return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);}
Кенни, ты лучший. Мне только жаль, что у меня не было графического изображения того, как он округляется, поэтому я уверен, что он дает ожидаемые результаты в 100% случаев. Думаю, мне придется провести небольшое тестирование.
Alph.Dev
Есть ли способ изменить этот код, чтобы добавить третий параметр с круглым режимом HALF_UP / HALF_DOWN?
Alph.Dev
12
На этот вопрос есть много ответов, наверное, все дадут вам ответ, который вы ищете. Но, как упоминает @TallGreenTree, для этого есть функция.
Но проблема с ответом @TallGreenTree заключается в том, что он не округляется до ближайшего 10. Чтобы решить эту проблему, добавьте +5к своему числу, чтобы округлить. Если вы хотите округлить, сделайте-5 .
Итак, в коде:
round($num +5,-1);
Вы не можете использовать round mode для округления, потому что это округляет только дроби, а не целые числа.
Если вы хотите округлить до ближайшего 100, используйте +50.
Изменить: я не знал (и это плохо документировано на сайте), что roundтеперь поддерживает «отрицательную» точность, поэтому вы можете более легко использовать
$round = round($roundee,-1);
Изменить снова: если вы всегда хотите округлить, вы можете попробовать
Моим первым порывом было поискать в Google "php math", и я обнаружил, что есть основная функция математической библиотеки под названием "round ()", которая, вероятно, именно то, что вам нужно.
Для людей, которые хотят делать это с чистым 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 graphfunction 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;}
Hey i modify Kenny answer and custom it not always round function now it can be ceil and floor functionfunction roundToTheNearestAnything($value, $roundTo,$type='round'){
$mod = $value%$roundTo;if($type=='round'){return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);}elseif($type=='floor'){return $value+($mod<($roundTo/2)?-$mod:-$mod);}elseif($type=='ceil'){return $value+($mod<($roundTo/2)?$roundTo-$mod:$roundTo-$mod);}}
echo roundToTheNearestAnything(1872,25,'floor');// 1850<br>
echo roundToTheNearestAnything(1872,25,'ceil');// 1875<br>
echo roundToTheNearestAnything(1872,25,'round');// 1875
Ответы:
floor()
спустится.ceil()
пойдет вверх.round()
по умолчанию перейдет к ближайшему.Разделите на 10, сделайте потолок, затем умножьте на 10, чтобы уменьшить значащие цифры.
Изменить: я так долго делал это ... но ответ TallGreenTree чище.
источник
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
Это округлит число $ до ближайшего 10. Вы также можете передать третью переменную, если необходимо изменить режим округления.
Подробнее здесь: http://php.net/manual/en/function.round.php
источник
23
будет,20
а не30
потому, что он всегда будет округляться до ближайшего 10. Режим округления не поможет, так как это только половина округления послеx.
.На самом деле я искал функцию, которая могла бы округлить до ближайшей переменной, и эта страница продолжала появляться в моих поисках. Поэтому, когда я наконец закончил писать функцию сам, я подумал, что опубликую ее здесь, чтобы другие могли найти.
Функция округлится до ближайшей переменной:
Этот код:
Выведет:
источник
На этот вопрос есть много ответов, наверное, все дадут вам ответ, который вы ищете. Но, как упоминает @TallGreenTree, для этого есть функция.
Но проблема с ответом @TallGreenTree заключается в том, что он не округляется до ближайшего 10. Чтобы решить эту проблему, добавьте
+5
к своему числу, чтобы округлить. Если вы хотите округлить, сделайте-5
.Итак, в коде:
Вы не можете использовать
round mode
для округления, потому что это округляет только дроби, а не целые числа.Если вы хотите округлить до ближайшего
100
, используйте+50
.источник
div на 10, затем используйте ceil, затем mult на 10
http://php.net/manual/en/function.ceil.php
источник
Пытаться
round(23, -1);
источник
Мы можем "обмануть" через раунд с
Мы также можем избежать деления с плавающей запятой с помощью
Изменить: я не знал (и это плохо документировано на сайте), что
round
теперь поддерживает «отрицательную» точность, поэтому вы можете более легко использоватьИзменить снова: если вы всегда хотите округлить, вы можете попробовать
источник
источник
Попробуй это:
источник
Моим первым порывом было поискать в Google "php math", и я обнаружил, что есть основная функция математической библиотеки под названием "round ()", которая, вероятно, именно то, что вам нужно.
источник
Для людей, которые хотят делать это с чистым SQL, без использования php, java, python и т. Д.
SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';
источник
Я хотел округлить до следующего числа в месте наибольших цифр (есть ли для этого название?), Поэтому я сделал следующую функцию (на php):
источник
источник
Это легко сделать с помощью функции PHP fmod . Приведенный ниже код относится к 10, но вы можете изменить его на любое число.
ВЫХОД: 100
источник
до ближайшего 10, должно быть, как показано ниже
источник
Попробуйте это ...... введите число, которое нужно округлить, и оно будет округлено до ближайшей десятой. Надеюсь, что это поможет ....
раунд ($ num, 1);
источник