Округлить целое число до ближайшего кратного 5 в PHP

Поиск функции для округления чисел до ближайшего кратного 5

22 -> 20
23 -> 25
40 -> 40
46 -> 45
48 -> 50

и так далее.

Попробовал это, которое всегда возвращает более высокое значение:

5 * ceil($n / 5);
 Mahn16 окт. 2012 г., 13:14
Попробуйте также оператор модуля:$n - ($n % 5); это обычно лучше для этих случаев.

Ответы на вопрос(3)

столкнувшись с этой проблемой, помогая сделать POS для канадской компании, придумали это решение, надеюсь, оно кому-нибудь поможет. (Канада сняла копейки в 2012 году). Также включает в себя оценку налога, просто введите «1» в качестве второго аргумента.

    //calculate price and tax
function calctax($amt,$tax_included = NULL){
  $taxa = 'tax rate 1 here';
  $taxb = 'tax rate 2 here';
  $taxc = ($taxa + $taxb) + 1;
  if(is_null($tax_included)){
    $p = $amt;
   }else{
    $p = number_format(round($amt / $taxc,2),2);
   } 
  $ta = round($p * $taxa,2);
  $tb = round($p * $taxb,2);
  $sp = number_format(round($p+($ta + $tb),2),2);
  $tp = number_format(round(($sp*2)/10,2)*5,2);
  $ret = array($ta,$tb,$tp);
  return $ret;
}
Решение Вопроса

использованиеround() вместоceil().

5 * round($n / 5);

ceil() округляет число с плавающей запятой до следующего целого числа в последовательности.round() округление до ближайшего целого числа с использованием стандартных правил округления.

 Chris16 окт. 2012 г., 13:14
спасибо, это было легко :)
 trante16 мая 2013 г., 00:42
round() возвращает число с плавающей точкой, а не целое число.(int) 5 * round($n / 5); может быть лучше.
 alex16 мая 2013 г., 02:04
@trante округляется до целого числа, но все равноfloat тип.

поскольку раунд работает с десятичными числами, умножьте на 5 и разделите на 10, а затем округлите его Умножьте на 5 еще раз, чтобы получить то, что вы хотите. (Другие ответ тоже работает, просто другой взгляд на него)

function round_5($in)
{
    return round(($in*2)/10)*5;
}

echo round_5(48);

Посмотрите, поможет ли это

Ваш ответ на вопрос