Я хочу округлить число до ближайшего 9, вот пример
(12,24,37,75,80)
если я дал эти входы, хочу получить вывод, как показано ниже
(19,29,39,79,89)
Я использую PHP (laravel), пожалуйста, помогите мне.
предположим, что 12 - это входное число, которое я хочу получить 19, или, если 24 - это входное число, выходное значение должно быть 29.
Так что в основном вы просто хотите заменить последнюю цифру на 9.
@MUHAMMEDJABIRC Все еще неясно. Какой ответ на 90?
на 90 тоже нужно 99
@nice_dev Ответ ниже работает для меня, спасибо за ответ
@MUHAMMEDJABIRC Вопросы по SO в любом случае должны быть ясными, чтобы будущие читатели, которые ссылаются на ваш вопрос, могли понять, что было задано и на что был дан ответ.
$input = [12,24,37,75,80];
$output = array_map(function($num) {
return (int)($num / 10) * 10 + 9;
}, $input);
@MUHAMMEDJABIRC Для 90 это 91 или 99 или, может быть, само 90?
<?php
$items = array(12,24,37,75,80);
$endDigit = 9; //this should be between 0-9
$newItems = array();
foreach($items as $item){
$final = (int)($item / 10) * 10 + $endDigit;
array_push($newItems,$final);
}
print_r($newItems);
Выход
Array ( [0] => 19 [1] => 29 [2] => 39 [3] => 79 [4] => 89 )
Вы проверили свою функцию с $endDigit=3
? Результат [13,23,33,73,83]
. Это не предполагаемое поведение "округивания".
Мне нравится простота ответа @HTMHell. И он отлично работает для целых чисел. Однако я обнаружил, что при использовании реальных чисел в качестве входных данных что-то вроде 19.999
будет «округлено» до 19
.
Поэтому я предлагаю следующую модифицированную версию:
echo json_encode(array_map(function($v){
return ceil(($v+1)/10)*10-1;
},[12,18.99,19.01,24,37,75,80,90]));
// [19,19,29,29,39,79,89,99]
И, чтобы ответить на вопрос @nice_dev, 90
нужно округлить до 99
.
Можете ли вы уточнить самые ближайшие 9 еще больше?