Итак, вот моя ситуация. У меня есть пара чисел, где я хочу округлить до ближайшего и наименьшего кратного 10.
Например, значения от 51 до 59 должны округляться до 50.
Input = 59 = >Respose = 50
Input = 51 => Respose = 50
я пытался
$number = round(53, -1);
что даст 50, что правильно, что я хочу, но если я попробую с 56, это даст мне 60. Но и здесь я ожидаю 50. Может ли кто-нибудь мне помочь?
Принятый ответ (если кто-то читает вопрос)
этаж ($ номер / 10) * 10
Тем не менее, это дает десятичные значения, которые я округлил и изменил на
$amount = (int)floor($amount / 10)*10;
использование floor
вместо; сначала делим на 10, затем умножаем усеченный результат обратно на:
$number = floor($number / 10) * 10
Использование таких решений, как $number = round($number - 5, -1);
может вызвать проблемы с краями с плавающей запятой. (Интересно, что именно так это делали ранние реализации Java, что привело к катастрофическим результатам.)
Вы должны разделить свой номер на 10
, затем этаж затем умножьте на 10:
<?php
function floor10($input) {
$input = $input/10;
$input = floor($input);
$input = 10*$input;
return $input;
}
echo floor10(51); // echoes 50
echo floor10(59); // echoes 50
Округлить вниз:
$x = floor($x/10) * 10;
Округлять:
$x = ceil($x/10) * 10;
Округлить до ближайшего (вверх или вниз):
$x = round($x/10) * 10;
используйте int для удаления десятичных точек после деления, а затем mul на 10
(INT) ($ Num / 10) * 10
Вам не нужна никакая функция для этой простой математики.
/* rating percentage to nearest 10 */
$rating_percentage=92; //if 92 output will be 90
$r=$rating_percentage%10; //get the remainder after dividing by number 10
$rating_percentage=$rating_percentage-$r; //deduct the remainder to make the number perfectly dividible by 10
$r=$r>=5?10:0; //if remainder is greater or equal to 5 make it 10 else 0
$rating_percentage=$rating_percentage+$r;//add the updated remainder back to numberprint_r("<pre>");
print_r($rating_percentage); //output 90 for 91-94 and 100 for 96-100
print_r("</pre>");