1с округлить до целого в большую сторону

Обновлено: 08.07.2024

Округление результатов арифметических операций в запросах

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

Методическая рекомендация (полезный совет)

1. Если в операции деления заранее известны порядки числителя и знаменателя, то следует по возможности избегать выполнения деления числа заведомого маленького порядка на число заведомо большого порядка. Например, вместо:

0.02 / 28346 * 9287492

0.02 * 9287492 / 28346

2. При выполнении арифметических операций в запросах к базе данных платформа 1С:Предприятия поддерживает точность вычислений до 8 разрядов дробной части. Однако, из-за особенностей работы различных СУБД в некоторых ситуациях точность результатов может отличаться от 8. Более подробно о вычислении разрядности результатов можно почитать в статье ИТС Разрядность результатов выражений и агрегатных функций в языке запросов.

Если точность результата выполнения запроса к базе данных, содержащего

  • арифметические операции деления,
  • агрегатные функции СРЕДНЕЕ ,
  • арифметические операции умножения, если каждый из множителей может иметь дробную часть,

различается на различных СУБД, то рекомендуется к операндам и/ или результатам этих операций применять оператор явного приведения разрядности и точности числовых данных:

ВЫРАЗИТЬ(. КАК Число(m, n))

Оператор ВЫРАЗИТЬ следует применять к операндам, если на какой-нибудь СУБД точность получаемого результата недостаточна. Например, требуется 10 разрядов после запятой, а получается 6.

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

Важно иметь в виду, что на разных СУБД имеются различные ограничения на максимальную разрядность десятичных чисел. Самое жесткое ограничение - это 31 разряд в целой и дробной частях. Чем меньшее значение разрядности будет указано для операндов, тем выше сможет быть точность результата. Например, если в результате требуется не менее 10 разрядов дробной части, первый операнд заведомо помещается в 15 разрядов целой части, а второй операнд заведомо помещается в 5 знаков целой части, то выражение может быть записано так:

ВЫБРАТЬ
ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель КАК Число(25,10)) / ВЫРАЗИТЬ(Таблица.Знаменатель КАК Число(15,10)) КАК Результат
ИЗ Таблица КАК Таблица

Оператор ВЫРАЗИТЬ следует применять к результату, если точность вычислений на всех СУБД достаточна, но на некоторых она больше, а на других меньше. При этом указанная общая разрядность результата должна быть минимальной, но не меньше той, которая достаточна для представления значений результата. Если в приведенном примере известно, что Знаменатель не может быть меньше 0.00001, то для представления результата достаточно 20 разрядов целой части. В этом случае выражение может быть записано так:

ВЫБРАТЬ
ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель / Таблица.Знаменатель КАК Число(30,10)) КАК Результат
ИЗ Таблица КАК Таблица

Иногда может быть целесообразно выполнить приведения к требуемой точности как операндов, так и результата. Например:

ВЫБРАТЬ
ВЫРАЗИТЬ(ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель КАК Число(25,10)) / ВЫРАЗИТЬ(Таблица.Знаменатель КАК Число(15,10)) КАК Число(30,10)) КАК Результат
ИЗ Таблица КАК Таблица

В данной статье будет рассмотрено как проводить округление в1С 8.3 в большую сторону при помощи специальных функций. Также будут приведены примеры для определения округления в большую сторону в 1С.

1. Функция округления числа

В системе 1С есть специальная функция, которая помогает округлить число в большую сторону – это «ОкруглитьВбольшуюСторону()».



Рис. 1 Пример стандартного вида этой функции на скриншоте с кодом для серверного применения

Выше показан пример кода функции «ОкруглитьВбольшуюСторону()» для серверного применения. Ее же можно применить и для клиента в системе 1С:



Рис. 2 Округление в большую сторону в 1С

Также можно рассмотреть функцию, которая совершает обычное округление числа в большую сторону, и проследить, как она отличается от «ОкруглитьВбольшуюСторону()». Это – функция Окр(). Например, если будет Окр(15.55), то возвращено будет простое число 15. При помощи данной функции, в отличие от предыдущей, которая производит округление до целого в большую сторону, можно убирать не целую часть от заданного числа. Также в ней можно устанавливать, до какого количества знаков будет проводится округление. Как пример, если будет Окр(15.2235), то в результате вернётся 15.22. Также данная функция может задавать сколько порядков в числе необходимо убрать. Например, если будет Окр(14567, -3), то вернётся значение 14000.

2. Применение для округления суммы в 1С

Рассмотрим, где можно на практике применять округление в большую сторону в 1С.



Рис. 3 Округление суммы в 1С

3. Режимы округления в 1С 8

Также следует уделить внимание и другим режимам округления в системе 1С 8:

· Округление до первого знака после запятой при условии, что знак меньше пяти:



Рис. 4 Код для округления в 1С 8

· Округление до первого знака после запятой при условии, что знак больше, либо равен пяти:



Рис. 5 Пример кода округления 1С 8.3

· Округление до N-ного знака после запятой в случае, если N+1 = 5, а все остальные знаки равны нулям, то округляться будет по третьему параметру внутри функции по округлению числа:



Рис. 6 Функция округления числа

· Округление на основании целой части заданного числа, данная функция может быть также рассмотрена, как округление числа в большую сторону:

В данной статье будет рассмотрено как проводить округление в1С 8.3 в большую сторону при помощи специальных функций. Также будут приведены примеры для определения округления в большую сторону в 1С.

1. Функция округления числа

В системе 1С есть специальная функция, которая помогает округлить число в большую сторону – это «ОкруглитьВбольшуюСторону()».



Рис. 1 Пример стандартного вида этой функции на скриншоте с кодом для серверного применения

Выше показан пример кода функции «ОкруглитьВбольшуюСторону()» для серверного применения. Ее же можно применить и для клиента в системе 1С:



Рис. 2 Округление в большую сторону в 1С

Также можно рассмотреть функцию, которая совершает обычное округление числа в большую сторону, и проследить, как она отличается от «ОкруглитьВбольшуюСторону()». Это – функция Окр(). Например, если будет Окр(15.55), то возвращено будет простое число 15. При помощи данной функции, в отличие от предыдущей, которая производит округление до целого в большую сторону, можно убирать не целую часть от заданного числа. Также в ней можно устанавливать, до какого количества знаков будет проводится округление. Как пример, если будет Окр(15.2235), то в результате вернётся 15.22. Также данная функция может задавать сколько порядков в числе необходимо убрать. Например, если будет Окр(14567, -3), то вернётся значение 14000.

2. Применение для округления суммы в 1С

Рассмотрим, где можно на практике применять округление в большую сторону в 1С.



Рис. 3 Округление суммы в 1С

3. Режимы округления в 1С 8

Также следует уделить внимание и другим режимам округления в системе 1С 8:

· Округление до первого знака после запятой при условии, что знак меньше пяти:



Рис. 4 Код для округления в 1С 8

· Округление до первого знака после запятой при условии, что знак больше, либо равен пяти:



Рис. 5 Пример кода округления 1С 8.3

· Округление до N-ного знака после запятой в случае, если N+1 = 5, а все остальные знаки равны нулям, то округляться будет по третьему параметру внутри функции по округлению числа:



Рис. 6 Функция округления числа

· Округление на основании целой части заданного числа, данная функция может быть также рассмотрена, как округление числа в большую сторону:

В данной статье будет рассмотрено как проводить округление в1С 8.3 в большую сторону при помощи специальных функций. Также будут приведены примеры для определения округления в большую сторону в 1С.

1. Функция округления числа

В системе 1С есть специальная функция, которая помогает округлить число в большую сторону – это «ОкруглитьВбольшуюСторону()».



Рис. 1 Пример стандартного вида этой функции на скриншоте с кодом для серверного применения

Выше показан пример кода функции «ОкруглитьВбольшуюСторону()» для серверного применения. Ее же можно применить и для клиента в системе 1С:



Рис. 2 Округление в большую сторону в 1С

Также можно рассмотреть функцию, которая совершает обычное округление числа в большую сторону, и проследить, как она отличается от «ОкруглитьВбольшуюСторону()». Это – функция Окр(). Например, если будет Окр(15.55), то возвращено будет простое число 15. При помощи данной функции, в отличие от предыдущей, которая производит округление до целого в большую сторону, можно убирать не целую часть от заданного числа. Также в ней можно устанавливать, до какого количества знаков будет проводится округление. Как пример, если будет Окр(15.2235), то в результате вернётся 15.22. Также данная функция может задавать сколько порядков в числе необходимо убрать. Например, если будет Окр(14567, -3), то вернётся значение 14000.

2. Применение для округления суммы в 1С

Рассмотрим, где можно на практике применять округление в большую сторону в 1С.



Рис. 3 Округление суммы в 1С

3. Режимы округления в 1С 8

Также следует уделить внимание и другим режимам округления в системе 1С 8:

· Округление до первого знака после запятой при условии, что знак меньше пяти:



Рис. 4 Код для округления в 1С 8

· Округление до первого знака после запятой при условии, что знак больше, либо равен пяти:



Рис. 5 Пример кода округления 1С 8.3

· Округление до N-ного знака после запятой в случае, если N+1 = 5, а все остальные знаки равны нулям, то округляться будет по третьему параметру внутри функции по округлению числа:



Рис. 6 Функция округления числа

· Округление на основании целой части заданного числа, данная функция может быть также рассмотрена, как округление числа в большую сторону:

Сразу скажу что я не гуру 1С программист, опыт у меня не совсем большой но все же он есть. Я достаточно часто пишу статьи в которых стараюсь поделиться полезными советами или дать более полный ответ на какой либо вопрос касаемый 1С разработки. Я когда то сам был новичком и пытался найти ответы на свои вопросы на различных форумах. Где как правило сидят опытные программисты и они дают советы с высоты своего опыта. Которые в свою очередь новичкам мало чем помогают. Сегодня хочу разобрать тему округления чисел. Поговорим об округление целой и дробной части.

Если вы только начинаете свой путь 1С программиста то рекомендую прочитать следующие статьи.

Программное округление целой и дробной части числа

И так программно можно округлить любое число как до целых так и до десятых , сотых. Делается это с помощью функции Окр, синтаксис такой.

Скажем если взять число = 12,123 то после применения Окр(Число , 0, 0); число будет 12.

Надеюсь объяснил понятно если нет то можете открыть Синтаксис-помощник.

1C Округление

Третья и четвертая кнопка округляет дробную часть, т.е копейки, возьмем тоже число 10,12. Если нажмем третью кнопку результатом будет число 10,20, а если нажмем четвертую то 10,10.

Программное округление целой и дробной части числа 1С

Допустим у вас есть табличная часть, в которой выбирается номенклатура и подставляется цена из справочника. Что бы округлить число в этом случае нужно создать событие при изменение табличной части и написать вот такой код.

&НаКлиенте
Процедура ТабличнаяЧастьПриИзмененииПосле(Элемент)
// Вставить содержимое обработчика.
Округление = Элементы.ТабличнаяЧасть.ТекущиеДанные;
Округление.Сумма = Окр(Округление.Сумма-0.05,1);

КонецПроцедуры

В результате все суммы будут округлены до сотых причем в меньшую сторону. Надеюсь все объяснил достаточно подробно но если остались вопросы обязательно спрашивайте!

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