1С:Предприятие 8.2 /
Разработчикам /
Реализация обработки данных
Округление результатов арифметических операций в запросах
Методическая рекомендация (полезный совет) 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.2
Другие материалы по теме:
скорость, точность, таблица, функции, возможности, буфер обмена, копировать, выполнить, обмен, выбрать, результат, конфигурирование, работы, значение, операции
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Реализация обработки данных
Другие материалы по теме:
Использование параметра Условие при обращении к виртуальной таблице
Использование параметров сеанса
Нас находят: округление в запросе 1с 8 2, разрядность в запросе 1с, выразить как число в запросе 1с 8 2, выполнение арифметических операций в запросе 1с 8 2, арифметические операции в запросе 1с, язык запросов 1с 8 2 округление, десятичные числа в запросе 1с, вычисления в запросе 1с, 1с округление в запросе, 1с 8 2 как в языке запроса округлить значение
Мы на Facebook