Надеюсь, Вы знакомы с функцией Окр(), которая позволяет округлить дробное число до ближайшего целого. Все когда-нибудь ею пользовались. Но всё меняется, когда Вам требуется округлить числовое значение строго в большую сторону.Бывалый программист сразу же бросится за изобретение колеса. Через пару минут родится новая функция, например, такая:
НовоеЗначение = Цел(ИсходноеЗначение) + 1;
Проверочное выражение Цел(1.1) + 1 = 2
, введенное в табло, убеждает в правильности выбранного пути, и новоиспеченное колесо начинает молотить ошибки, т.к. на проверку функции на всем диапазоне значений чего-то не хватило (надеюсь, что времени ;D). В итоге получается, что функция даже целые значения округляет вверх Цел(1) + 1 = 2
Найденное решение может быть более изощренным, например, таким:
НовоеЗначение = Окр(ИсходноеЗначение + 0.5, 0, 0);
Давайте разберем его подробнее: второй параметр функции Окр() указывает на необходимость округления до целого числа, а третий параметр заставляет воспринимать промежуточное значение 0.5 как 0 (ноль). И для того, чтобы спровоцировать округление в большую сторону, программист сознательно прибавляет к исходному значению число 0.5. Теперь, если исходное значение будет больше целого хотя бы на сотую, тысячную или миллионную долю, оно всегда будет округляться вверх.
Теперь ложка дегтя: округляться вверх будут и отрицательные значения. С математической точки зрения -2 меньше -1, но оригинальная функция Окр() выполняет округление по модулю, а не по математическим правилам. Поэтому программист должен подумать и над тем, как ему нужно округлять отрицательные значения.
Таким образом, если Вам нужен пример функции, выполняющей округление в большую сторону по аналогии с функцией Окр(), Вы попали куда нужно:
Функция ОкрВверх(ИсходноеЗначение) Перем НовоеЗначение; Если ИсходноеЗначение >= 0 Тогда НовоеЗначение = Окр(ИсходноеЗначение + 0.5, 0, 0); Иначе НовоеЗначение = Окр(ИсходноеЗначение - 0.5, 0, 0); КонецЕсли; Возврат НовоеЗначение; КонецФункции
Здравствуйте!
Тут у Вас ошибочка:
Округляет и так
ОКР( ИсходноеЗначение,2,1);
2- это второй знак после запятой округлять,а 1 — это в большую сторону.
Сергей, ошибки нет. Данная статья относится к тому случаю, когда все значения (целые и десятичные) нужно округлять только вверх. Например 3.1 и 3.6 до 4. Проверьте Ваш вариант. Будет он работать таким же образом!?