Як ми можемо округлити число з точністю до 10 у php?
Скажімо 23
, що маю , до якого коду я б його округлив 30
?
Як ми можемо округлити число з точністю до 10 у php?
Скажімо 23
, що маю , до якого коду я б його округлив 30
?
Відповіді:
floor()
знизиться.
ceil()
піде вгору.
round()
за замовчуванням перейде до найближчого.
Ділимо на 10, робимо стеля, потім помножуємо на 10, щоб зменшити значущі цифри.
$number = ceil($input / 10) * 10;
Редагувати: Я так давно роблю це .. але відповідь TallGreenTree чистіша.
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
round($number, -1);
Це округлить номер $ до найближчого 10. Ви також можете передати третю змінну, якщо потрібно, щоб змінити режим округлення.
Більше інформації тут: http://php.net/manual/en/function.round.php
23
буде, 20
а не 30
тому, що він завжди буде рухатися з точністю до 10. Режим округлення не допоможе, оскільки це лише округла половина після x.
.
Я насправді шукав функцію, яка могла б округлитись до найближчої змінної, і ця сторінка постійно з’являлася у моїх пошуках. Тому, коли я нарешті сам написав функцію, я подумав, що опублікую її тут, щоб її знайшли інші.
Функція округлиться до найближчої змінної:
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
У цьому питанні є багато відповідей, напевно, всі дадуть вам відповідь, яку ви шукаєте. Але, як згадує @TallGreenTree, для цього є функція.
Але проблема відповіді @TallGreenTree полягає в тому, що він не округляється, він округлюється з точністю до 10. Для вирішення цього питання додайте +5
свій номер, щоб округлити. Якщо ви хочете округлити вниз, зробіть -5
.
Отже в коді:
round($num + 5, -1);
Ви не можете використовувати round mode
для округлення, тому що це лише округлює дроби, а не цілі числа.
Якщо ви хочете провести округлення до найближчого 100
, вам слід використати +50
.
div на 10, потім використовуйте ceil, потім mult на 10
Спробуйте
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
Я хотів округлити до наступного числа у місці з найбільшими цифрами (чи є це ім'я?), Тому я зробив таку функцію (у 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;
}
Hey i modify Kenny answer and custom it not always round function now it can be ceil and floor function
function 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
Це можна легко досягти за допомогою функції PHP ' fmod '. Код нижче містить 10, але ви можете змінити його на будь-яке число.
$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;
ВИХІД: 100
Спробуйте це ...... передайте число, яке потрібно округлити, і воно буде округлено до найближчої десятої. Сподіваюся, це допоможе ....
круглі ($ num, 1);