Примитивный тип данных Число в 1С Предприятие 8
Здравствуйте, уважаемые читатели блога SoftMaker.kz! В прошлый раз мы начали обзор примитивных типов данных во встроенном языке 1С:Предприятие 8. Сегодня мы продолжим и поговорим о типе данных Число, а также рассмотрим, как работать с ним. Итак, поехали!
Числовыми типами могу быть переменные модуля и реквизиты базы данных. Например, у справочника «Номенклатура» есть реквизит «Цена» числового типа. Если посмотреть свойства реквизита «Цена», то можно увидеть ограничения разрядности для числа, например длинна целой части не может превышать 32 символа. Точность дробной части не может превышать 32 цифры.
Когда мы описываем переменную и присваиваем ей числовое значение, то мы нигде не фиксируем её разрядность, но все равно для переменных тоже существуют такие ограничения. Откроем «Синтакс-помощник», который нам подсказывает, что максимально допустимая разрядность для числа это 38 знаков. Такое ограничение сверху, вообще не препятствует решению любых экономических задач, это значит, что любую денежную величину можно описать с помощью этих чисел. Но если нам требуется описать какие-то огромные величины для решения каких-то математических задач, то лучше обратиться к теории программирования, где есть специальный алгоритм позволяющий написать числа с любой размерностью, на основании существующих ограничений. Ну всё-таки это уже теория программирования и напомню, что платформа 1С: Предприятие 8, имеет чёткое применения — решение экономических задач.
Теперь давайте поговорим о точности числовых значений, описанных в платформе 1С:Предприятие 8. Что касается реквизитов базы данных, то здесь понятно у нас есть естественное ограничение. А вот что касается переменных, здесь есть свои особенности. Давайте ещё раз посмотрим описание примитивного типа число. Откроем «Синтакс-помощник» -> Общие описание встроенного языка -> Примитивные типы -> Число. Здесь у нас указано, что максимальная разрядность 38 знаков, то есть максимум 38 знаков может быть описано числом. Это можно проверить. Создадим внешнюю обработку, добавим форму обработки и в модуле формы объявим переменную А и ее разрядность будет 40 знаков.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) А = 0123456789012345678901234567890123456789; КонецПроцедуры
Сохраняем обработку, ставим точку останова и воспользуемся средствами отладки. Запусим отладку (F5). Открываем обработку в пользовательском режиме (Файл -> Открыть -> ВнешняяОбработка1). Когда срабатает точка останова посмотрим, чему равно значение переменной А в табло. В табло (нижний экран программы) мы увидим все 40 цифр переменной А. Если умножить это значение на 1000, то получим:
А = 1234567890 1234567890 1234567890 1234567890 000
Видно, что прибавилось еще некоторое количество знаков. Очень хорошо видно, что на самом деле, разрядность переменных несколько больше чем 38 знаков. Таким образом в переменных мы можем оперировать большими числами, но в информационную базу, в любом случае, мы будем сохранять значения с длиной целой части не больше 32 знаков.
Рассмотрим какие операции применимы для чисел. Прежде всего это, конечно, обычные арифметические операции: сложение, вычитание, умножение и деление. При этом, если говорить о приоритетах, то сначала будут выполняться операции умножение и деление. Далее сложение и вычитание, но и так же не следует забывать про скобки. Скобки имеют наивысший приоритет и всегда выражения в них выполняются первыми.
Также есть операция под названием «Процент» и она обозначается символом «%». Процент означает остаток от деления А%B. Например, 10 % 3 =1, 11 % 3 = 2, 12 % 3 = 0. В последнем случае остаток от деления равен нулю. Кроме таких стандартных арифметических операций, существуют и различные функции, которые можно применять для чисел. Это математические функции давайте сейчас на них посмотрим.
Откроем «Синтакс-помощник» -> Общие описание встроенного языка -> Встроенные функции -> Функции для работы со значениями типа Число. Смотрите изображение вначале статьи.
Вы видите, что это и различные тригонометрические функции, отдельно отмечаю, что здесь есть возведение числа в степень, извлечение квадратного корня и так же есть функция, которая позволяет округлить число, до указанной разрядности и взять целую часть от числа (функция Цел()), например, у числа 12,6 целая часть соответственно будет равна 12. Вот такой набор функций для работы с числами и он достаточен для решения практически любых экономических задач.
функция демонстрирующая точность переменных в 1с 8.3
точность примера 320 знаков. результат можно сравнить с математическими справочниками.
Функция Пи()
Ед = Pow(10,400);
Знак = 1;
Результат = 0;
Для н = 0 по 300 Цикл
Показатель = н*2+1;
Результат = Результат + Знак * Ед/Показатель * (16*Ед/Pow(5,Показатель)/Ед — 4*Ед/Pow(239,Показатель)/Ед);
Знак = — Знак;
КонецЦикла;
Возврат Результат / Ед;
КонецФункции
Спасибо, asdvol!