2

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

Надеюсь, Вы знакомы с функцией Окр(), которая позволяет округлить дробное число до ближайшего целого. Все когда-нибудь ею пользовались. Но всё меняется, когда Вам требуется округлить числовое значение строго в большую сторону.Бывалый программист сразу же бросится за изобретение колеса. Через пару минут родится новая функция, например, такая:

НовоеЗначение = Цел(ИсходноеЗначение) + 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);
    2- это второй знак после запятой округлять,а 1 — это в большую сторону.

    1. Сергей, ошибки нет. Данная статья относится к тому случаю, когда все значения (целые и десятичные) нужно округлять только вверх. Например 3.1 и 3.6 до 4. Проверьте Ваш вариант. Будет он работать таким же образом!?

Добавить комментарий для Александр К. Отменить ответ

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