Наверняка Вы уже знаете о встроенных числовых функциях Цел() и Окр() встроенного языка.
Первая округляет число строго вниз, а вторая — вверх или вниз по математическим правилам. Но как быть, когда нужно округлить значение строго вверх?
В этом случае без написания собственной функции не обойтись. Наспех составленный алгоритм будет к частному, обрезанному функцией Цел() добавлять единицу. А простейшая функция будет выглядеть примерно так:
Функция ОкрВверх(ИсходноеЧисло) Возврат Цел(ИсходноеЧисло) + 1; КонецФункции
Однако, «дьявол кроется в мелочах»: данная функция будет возвращать некорректный результат в случае, когда результат деления представляет собой целое число. Изучите следующие тестовые примеры:
Значение = ОкрВверх(10 / 3); Сообщить("10/3=" + Значение); // 10/3=4 Значение = ОкрВверх(10 / 5); Сообщить("10/5=" + Значение); // 10/5=3
Чтобы не попасть в такую логическую ловушку, необходимо учитывать тот факт, что результат деления может быть целым числом. А сама функция округления вверх может выглядеть так:
Функция ОкрВверх(ИсходноеЧисло) Если Цел(ИсходноеЧисло) = ИсходноеЧисло Тогда Возврат ИсходноеЧисло; Иначе Возврат Цел(ИсходноеЧисло) + 1; КонецЕсли; КонецФункции
или с применением тернарного оператора так:
Функция ОкрВверх(ИсходноеЧисло) Возврат ?(Цел(ИсходноеЧисло) = ИсходноеЧисло, ИсходноеЧисло, Цел(ИсходноеЧисло) + 1); КонецФункции
Теперь, если еще раз прогнать тестовые примеры, Вы получите корректные результаты.
UPD 2022.12.08
Роман в комментариях резонно заметил, что приведенные функции работают только с положительными числами. Ну что ж, вот универсальный вариант:
Функция ОкрВверх(ИсходноеЧисло) Перем Знак, МодульЧисла; Знак = ?(ИсходноеЧисло < 0, -1, 1); МодульЧисла = ?(ИсходноеЧисло < 0, -ИсходноеЧисло, ИсходноеЧисло); Возврат Знак * ?(Цел(МодульЧисла) = МодульЧисла, МодульЧисла, Цел(МодульЧисла) + 1); КонецФункции
Метод хороший, но не работает для отрицательных чисел. Например, число -4,7 при округлении в большую сторону должно давать -4, а ваш метод дает -3.
Роман, дьявол кроется в мелочах)) На практике редко приходится иметь дело с отрицательными числами, поэтому они и не учитывались. Но идея для доработки материала хорошая)