Опубликовано: 15.01.2021

Работа с числовыми значениями

Числовой тип данных — это один из базовых типов данных, поддерживаемых в языке 1С версии 7.7. Числовым типом в системе «1С:Предприятие» может быть представлено любое десятичное число.

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

Примеры записи числовых литералов:

0
123
−15
+24.11
0.247

Операции с числами

Для чисел в языке 1С определены следующие виды арифметических операций:

  • сложение (a + b);
  • вычитание (a − b);
  • умножение (a * b);
  • деление (a/b);
  • остаток от деления (a%b);
  • унарный минус (−a).

Примечание: Результатом операции «Остаток от деления» будет оставшееся от делимого число, не делящееся нацело на делитель. Например, результатом операции 10%3 будет 1 и результатом операции 1%4 тоже будет 1.
 
При выполнении операции «Остаток от деления» оба операнда операции округляются до целого значения, поэтому 9.4%3 будет равно 0, а 9.5%3 равно 1.

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

Уровни приоритетов арифметических операций в порядке убывания:

  1. Операнды, заключенные в скобки — высший приоритет.
  2. Унарный минус
  3. Умножение, деление, остаток от деления
  4. Сложение, вычитание — низший приоритет

Кроме арифметических операций, для чисел в языке определены также операции сравнения:

  • больше (a > b);
  • больше или равно (a >= b);
  • равно (a = b);
  • не равно (a <> b);
  • меньше (a < b);
  • меньше или равно (a <= b).

Преобразование в числовой тип значений других базовых типов

В процессе вычисления различных выражений может возникнуть необходимость в явном или неявном преобразовании типов отдельных значений. При преобразовании значений в числовой тип система руководствуется следующими правилами:

  • Строковое значение преобразуется в числовое до тех пор, пока это возможно. Так, например, строка ".5кг" будет преобразована в число 0.5, а строка "002М345" в число 2 (незначащие нули отбрасываются). Если же в начале строки не имеется ничего, что могло бы быть проинтерпретировано как число, то результатом преобразования будет число 0 (ноль).
  • Результатом преобразования даты в число является численное представление даты (количество дней от некой даты, принятой за начальную).

Для явного преобразования в числовой тип значений других базовых типов служит системная (встроенная) функция Число(). Англоязычный синоним имени функции — Number().

Синтаксис функции:

Число(<ПреобразуемоеЗначение>)

где <ПреобразуемоеЗначение> — выражение типа "Строка" или "Дата", результат вычисления которого необходимо преобразовать в число.

Примеры преобразования строковых значений в числа:

Результат = Число(".5кг");        // результат 0.5
Результат = Число("002М345");     // результат 2
Результат = Число("01.036001");   // результат 1.036001
Результат = Число("_01.012001");  // результат 0
Результат = Число("Р1345");       // результат 0

Примеры преобразования значений дат в числа:

Результат = Число('01.01.2001');    // результат 2451911
Результат = Число('02.01.2001');    // результат 2451912

Примечание: Даты во встроенном языке программирования 1С принято заключать в одинарные кавычки, в отличие от строк, для выделения которых используются кавычки двойные.

Встроенные математические функции

Округлить число до указанного количества знаков позволяет системная функция Окр(). Она имеет три параметра, причём последние два являются необязательными. Возвращаемым значением функции является округлённое число. Англоязычный синоним имени функции — Round().

Синтаксис функции:

Окр(<Число>, <КолЗнаков>, <Способ>)

где

  • <Число> — числовое выражение, результат которого надо округлить;
  • <КолЗнаков> — числовое выражение, значение которого определяет формат округления. Если значение положительное, то оно определяет количество знаков дробной части, если отрицательное, то указанное число округляется до соответствующего количества знаков целой части. Параметр является необязательным. Значение по умолчанию — 0;
  • <Способ> — числовое выражение, значение которого определяет способ округления. Параметр является необязательным. Возможные значения:
    • 0 — округлять 0,5 до 0;
    • 1 — округлять 0,5 до 1 (значение по умолчанию).

Пример использования:

Сумма = Окр((Количество * Цена), 2, 0);

Получить целую часть числа (путём отсечения его дробной части) позволяет функция Цел(). Исходное число передаётся функции в качестве параметра, а её возвращаемым значением будет целая часть числа. Англоязычный синоним имени функции — Int().

Пример использования:

МожноКупить = Цел(Наличность/Цена);

Определить элемент с минимальным значением в списке значений позволяет встроенная функция Мин(). Все сравниваемые значения передаются данной функции в виде параметров, а функция возвращает минимальное значение из этого списка. Англоязычный синоним имени функции — Min().

Синтаксис функции:

Мин(<Элемент1>, <Элемент2>, ..., <ЭлементN>)

где <Элемент1>, <Элемент2>, …, <ЭлементN> — список выражений базовых типов данных (числа, даты, время или т.п.). Тот или иной семантический вариант функции определяется по типу данных первого параметра. В случае несовпадения типа второго и последующих параметров с требуемым, их значения преобразуются к требуемому типу в соответствии с правилами преобразования типов. Если тип первого параметра не соответствует ни одному из допустимых типов, то в зависимости от ситуации может производиться преобразование типов или возбуждаться состояние ошибки исполнения.

Пример использования:

МинимЦена = Мин(Цена1, Цена2, Цена3);

Определить элемент с максимальным значением в списке значений позволяет встроенная функция Макс(). Все сравниваемые значения передаются данной функции в виде параметров, а функция возвращает максимальное значение из этого списка. Англоязычный синоним имени функции — Max().

Синтаксис функции:

Макс(<Элемент1>, <Элемент2>, ..., <ЭлементN>)

где <Элемент1>, <Элемент2>, …, <ЭлементN> — список выражений базовых типов данных (числа, даты, время или т.п.). Тот или иной семантический вариант функции определяется по типу данных первого параметра. В случае несовпадения типа второго и последующих параметров с требуемым, их значения преобразуются к требуемому типу в соответствии с правилами преобразования типов. Если тип первого параметра не соответствует ни одному из допустимых типов, то в зависимости от ситуации может производиться преобразование типов или возбуждаться состояние ошибки исполнения.

Пример использования:

МаксимальнаяЦена = Макс(Цена1, Цена2, Цена3);

Вычислить десятичный логарифм указанного числа позволяет системная функция Лог10(). Исходное число передаётся функции в качестве единственного параметра, а её возвращаемым значением будет десятичный логарифм этого числа. При отрицательном или нулевом значении параметра возвращаемое значение будет равно нулю. Англоязычный синоним имени функции — Log10().

Пример использования:

Шкала = Лог10(Частота);

Вычислить натуральный логарифм указанного числа позволяет системная функция Лог(). Исходное число передаётся функции в качестве единственного параметра, а её возвращаемым значением будет натуральный логарифм этого числа. При отрицательном или нулевом значении параметра возвращаемое значение будет равно нулю. Англоязычный синоним имени функции — Ln().

Пример использования:

Шкала = Лог(Частота);

Другие статьи по схожей тематике