Округляем число до ближайшего разряда

Округляем число до ближайшего разряда

48
20.11.2018

Иногда бывает нужно произвести округление числа до ближайшего разрядного целого числа. Например, 10500 - до 11000 и т.п.

Данная функция особенно востребована для создания фильтров по цене или любому другому числовому значению. 

Можно написать свой механизм разделения числа на разряды и искать ближайший разряд, но лучше воспользоваться специальной функцией предназначенной именно для этого.

Отрицательный второй параметр функции round предназначен именно для такого округления:

round((ceil($minPrice) + $step), -(strlen($step) - 1));

В качестве примера приведу механизм разбивки отрезка из цен от минимальной до максимальной цены на 4 равных отрезка

$arItem = $arResult['ITEMS']['BASE'];
$arPriceSteps = array();
$stepsCnt = 4;
$minPrice = floatval($arItem['VALUES']['MIN']['VALUE']);
$maxPrice = floatval($arItem['VALUES']['MAX']['VALUE']);
$step = round(($maxPrice - $minPrice) / $stepsCnt);

if ($step >= 100)
{
	for ($i = 0; $i < ($stepsCnt - 1); $i++)
	{
		$arPriceSteps[] = round((ceil($minPrice) + $step), -(strlen($step) - 1));
		$minPrice += $step;
	}
	$arPriceSteps[] = round(ceil($maxPrice), -(strlen($step) - 1));
}


Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку