Как в 1с округлить до целого числа
К концу дня что то ни как не могу придумать универсальный механизм который бы делал округление до целого числа кратного нужному.
например что бы сумма 183 была округленна до числа кратному 5.
Т.е. до 185.
Соответственно 192 до 195
197 до 200 и т.д.
192 округляется до 190
поделить, округлить, умножить
(1) Это в нормальных случаях))) Тут только плюс фирме)))
(4) Тогда это не округление, а мошенничество.
(2) Точно!
Спасибо!
если надо вверх — то на этапе «округлить» надо округлять вверх, что множество раз было рассмотрено на форуме, в простейшем случае +0.5 и параметр «округлять 1.5 как 1»
Тогда так:
ОкруглённаяСуммаВПользуФирмы = Окр(Сумма / 5 + 0.5) * 5
(8)Окр(Сумма / 5 + 0.5, , 0)
(10) в (8) еще и 190 до 195 😉
(11) Я проверяю вначале. Если сумма кратная то округлять не надо.
Функция ОкруглитьДО(ИсходноеЧисло, РазрядОкругления = 1, РежимОкругления = 1);
ОстатокОтДеления = ИсходноеЧисло % РазрядОкругления;
Если РежимОкругления = 1 Тогда
//Обычный по мат. правилам
Результат = ИсходноеЧисло — ?(ОстатокОТДеления>=(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления);
ИначеЕсли РежимОкругления = 2 Тогда
//Обычный по мат. правилам, 0.5 округляется в меньшую сторону
Результат = ИсходноеЧисло — ?(ОстатокОТДеления>(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления);
ИначеЕсли РежимОкругления = 3 Тогда
//В меньшую сторону
Результат = ИсходноеЧисло — ОстатокОтДеления;
ИначеЕсли РежимОкругления = 4 Тогда
//В большую сторону
Результат = ИсходноеЧисло — ОстатокОтДеления + РазрядОкругления;
КонецЕсли;
Возврат Результат;
КонецФункции
Вызываем
ОкруглитьДО(183, 5, 4);
Получаем округление до 5 в большую сторону, т.е. до 185
(14) Вот спасибо.
(14) проверял? а почему оно 190 до 195 округляет?
(16)+ в режиме «в большую сторону»
вот для таких случаев юнит тесты пригождаются
Функция ОкруглитьДО(ИсходноеЧисло, РазрядОкругления = 0.5, РежимОкругления = 3);
ОстатокОтДеления = ИсходноеЧисло % РазрядОкругления;
Если ОстатокОтДеления = 0 Тогда
Возврат ИсходноеЧисло;
КонецЕсли;
Если РежимОкругления = 1 Тогда
//Обычный по мат. правилам
Результат = ИсходноеЧисло — ?(ОстатокОТДеления>=(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления);
ИначеЕсли РежимОкругления = 2 Тогда
//Обычный по мат. правилам, 0.5 округляется в меньшую сторону
Результат = ИсходноеЧисло — ?(ОстатокОТДеления>(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления);
ИначеЕсли РежимОкругления = 3 Тогда
//В меньшую сторону
Результат = ИсходноеЧисло — ОстатокОтДеления;
ИначеЕсли РежимОкругления = 4 Тогда
//В большую сторону
Результат = ИсходноеЧисло — ОстатокОтДеления + РазрядОкругления;
КонецЕсли;
Возврат Результат;
КонецФункции
Как в 1с 8 округлить число до целого?
Для округления чисел во встроенном языке на платформе 1С:Предприятие 8 существует две функции:
1) Функция Окр()
Функция Окр() выполняет округление числового значения до ближайшего целого вверх или вниз:
Сообщить(Окр(14.5)); // 15
Округление пограничных значений выполняется по математическим правилам: значения, заканчивающиеся на 5 округляются вверх. Но это поведение можно изменить, указав третий параметр функции как РежимОкругления.Окр15как10 :
Окр(14.5, 0, РежимОкругления.Окр15как10);
2) Функция Цел()
Функция Цел() выполняет усечение числового значения до ближайшего целого. Усечение всегда выполняется вниз:
Сообщить(Цел(14.5)); // 14
Читайте также:
Как в 1с округлить до целого числа
« Как стать программистом 1С » Язык 1С » 1С ОКР — округление чисел 1С
1С ОКР — округление чисел 1С
Функция 1С Окр(Число) производит округление чисел 1С нужным способом. По-умолчанию – до целого.
- Для округления числе 1С выполняем функцию 1С Окр(22.55)
- 1С возвращает 22
Во-первых с помощью 1С ОКР можно проводить округление дробной части чисел 1С (то, что после запятой), например до сотых двух знаков):
Результат = Окр(15.2233, 2); //15.22
Во-вторых с помощью 1С ОКР можно проводить округление целой части чисел 1С (то, что до запятой), например до тысяч (трех знаков):
Результат = Окр(15333, -3); //15000
И наконец, третье. Как известно если остаток меньше 5 – то округляется до 0, а если больше 5, то округляется до 1.
- 15.33 округляем как 15.3
- 15.35 округляем как 15.4
- 15.37 округляем как 15.4.
С помощью 1С ОКР можно изменить этот порядок:
- 15.33 округляем как 15.3
- 15.35 округляем как 15.3
- 15.37 округляем как 15.4.
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Добавим в наш калькулятор новые кнопки «Окр».
Для операции нужен только один параметр, поэтому результат будет выводить сразу же по нажатию кнопки операции.
Чтобы узнать какую часть округлять и на сколько разрадов – запросим у пользователя число с помощью ВвестиЗначение().
В обработчик кнопки добавим новую ветку (как добавить новую ветку смотрите Сложение, вычитание, деление и умножение в 1С).
Пример программного кода:
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Проголосовать за этот пост:
Функция Окр()
Функция Окр() округляет исходное число до нужной разрядности в соответствии с заданным режимом округления.
Доступность
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример использования
Пример кода с использованием функции Окр() :
ИсходноеЧисло = 14.5; Сообщить(Окр(ИсходноеЧисло, 0, РежимОкругления.Окр15как10)); // 14 Сообщить(Окр(ИсходноеЧисло)); // 15 Сообщить(Окр(ИсходноеЧисло, -1)); // 10