Округление до ближайшего и кратного 10

Итак, вот моя ситуация. У меня есть пара чисел, где я хочу округлить до ближайшего и наименьшего кратного 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;

1

Решение

использование floor вместо; сначала делим на 10, затем умножаем усеченный результат обратно на:

$number = floor($number / 10) * 10

Использование таких решений, как $number = round($number - 5, -1); может вызвать проблемы с краями с плавающей запятой. (Интересно, что именно так это делали ранние реализации Java, что привело к катастрофическим результатам.)

5

Другие решения

Вы должны разделить свой номер на 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
2

Округлить вниз:

$x = floor($x/10) * 10;

Округлять:

$x = ceil($x/10) * 10;

Округлить до ближайшего (вверх или вниз):

$x = round($x/10) * 10;
2

используйте int для удаления десятичных точек после деления, а затем mul на 10
(INT) ($ Num / 10) * 10

0

Вам не нужна никакая функция для этой простой математики.

/* 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>");
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector