Как в 1с округлить до целого числа
Перейти к содержимому

Как в 1с округлить до целого числа

  • автор:

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

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

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

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с округлить до целого числа

как в 1с округлить число в меньшую сторону?
Например число 7,9 надо округлить до 7
Вот мое выражение, только округляет в большую
СтрокаТабличнойЧасти.КолКуп = ОКР(СтрокаТабличнойЧасти.цена/100*30/200);

А что по этому поводу говорит СП?

совсем СП украли

Цел (Int)
Синтаксис:
Цел()
Параметры:
(обязательный)
Тип: Число. Исходное число.
Возвращаемое значение:
Тип: Число. Результат выделения целой части.
Описание:
Вычисляет целую часть переданного числа, полностью отсекая дробную часть.
Пример:
МожноКупить = Цел(Наличность/Цена);

На крайняк отними 0.5 и округляй
Что-то в последнее время пошло много округлений.
(1) он не знает, что искать
ЕГЭ forever! люди уже не знают, что такое целая часть числа
в (0) вранье детектед, ОКР(7.9/100*30/200)=0 🙂

(5) вообще то я про 3-ий параметр «РежимОкругления»

Тип: Число.
Исходное число.

Тип: Число.
Определяет число знаков дробной части, до которых производится округление. Если параметр отрицательный, то число округляется до соответствующего разряда в целой части, начиная с младших разрядов.
Параметр обязательный, если указан параметр .
Значение по умолчанию: 0
(необязательный)

Тип: РежимОкругления.
Определяет режим округления. Помимо системного перечисления допускается использование числового параметра: 0 — если при округлении 1.5 = 1; 1 — если при округлении 1.5 = 2.
Значение по умолчанию: Окр15как20

т.е.
окр(бла-бла-бла,0, РежимОкругления.Окр15как10)
(9) а в меньшую сторону надо округлить что?

(9) Это не то, что нужно.
Автор неправильно использует терминологию. Ему нужно не округление, а отбрасывание дробной части. Как это делать, в теме уже ответили.

(11) Это почему ты так решил? Или ты задачу ставил?
Имхо у автора частный случай когда нужно целый, завтра понадобиться с точностью до 10 копеек, или до 100 руб.
Так что окр более универсальный в этом случае

Как в 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 группы могут видеть этот контент.

Проголосовать за этот пост:

Округление чисел в большую сторону

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

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

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

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

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

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

Рассмотрим, где можно на практике применять округление в большую сторону в 1С.
Например, запустим документ «ПоступлениеТоваровИУслуг». В нём нам необходимо проверить условие по возможности округления суммы. В случае, если округление необходимо произвести, то выведется окно с сообщением, в котором будет указано, сумму какого товара можно округлить. Как настроить округление в 1С, показано ниже:

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

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

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

Рис. 4 Код для округления в 1С 8
· Округление до первого знака после запятой при условии, что знак больше, либо равен пяти:

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

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

Рис. 7 Функция округления числа в большую сторону в 1С
Специалист компании «Кодерлайн» Айдар Фархутдинов

Добавить комментарий

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