0

Как в 1с 8 округлить в большую сторону?

Наверняка Вы уже знаете о встроенных числовых функциях Цел() и Окр() встроенного языка.

Первая округляет число строго вниз, а вторая — вверх или вниз по математическим правилам. Но как быть, когда нужно округлить значение строго вверх?

В этом случае без написания собственной функции не обойтись. Наспех составленный алгоритм будет к частному, обрезанному функцией Цел() добавлять единицу. А простейшая функция будет выглядеть примерно так:

Функция ОкрВверх(ИсходноеЧисло)
	
	Возврат Цел(ИсходноеЧисло) + 1;
	
КонецФункции

Однако, «дьявол кроется в мелочах»: данная функция будет возвращать некорректный результат в случае, когда результат деления представляет собой целое число. Изучите следующие тестовые примеры:

Значение = ОкрВверх(10 / 3);
Сообщить("10/3=" + Значение);
//	10/3=4
Значение = ОкрВверх(10 / 5);
Сообщить("10/5=" + Значение);
//	10/5=3

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

Функция ОкрВверх(ИсходноеЧисло)
	
	Если Цел(ИсходноеЧисло) = ИсходноеЧисло Тогда
		Возврат ИсходноеЧисло;
	Иначе
		Возврат Цел(ИсходноеЧисло) + 1;
	КонецЕсли;
	
КонецФункции

или с применением тернарного оператора так:

Функция ОкрВверх(ИсходноеЧисло)
	
	Возврат ?(Цел(ИсходноеЧисло) = ИсходноеЧисло, ИсходноеЧисло, Цел(ИсходноеЧисло) + 1);
	
КонецФункции

Теперь, если еще раз прогнать тестовые примеры, Вы получите корректные результаты.

Читайте также:

  1. Что такое тернарный оператор в 1с?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *