Перейти к основному содержимому
Версия: 6.x

Арифметические операторы (+, -, *, ...)

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

ОператорНазваниеОписаниеПримерРезультат
+СуммаПринимает два операнда на вход и возвращает их сумму3 + 58
-РазностьПринимает два операнда на вход и возвращает их разность
Также у этого оператора есть унарная форма, в этом случае первый операнд считается равным 0
5 - 32
*ПроизведениеПринимает два операнда на вход и возвращает их произведение3 * 515
/ОтношениеПринимает два операнда на вход и возвращает их отношение15 / 35

Все эти операторы возвращают NULL, если один из операндов NULL. Для операторов суммы и разности также есть возможность использовать специальную форму со скобками, в этом случае NULL будет эквивалентен 0. Причем для этих операторов будет верно и обратное - если результат оператора в такой форме равен 0, то возвращается NULL (к примеру 5 (-) 5 = NULL):

ОператорНазваниеОписаниеПримерРезультат
(+)СуммаПринимает два операнда на вход, возвращает их сумму, трактует NULL как 03 (+) 5
3 (+) NULL
8
3
(-)РазностьПринимает два операнда на вход, возвращает их разность, трактует NULL как 05 (-) 3
5 (-) NULL
5 (-) 5
2
5
NULL

Определение класса результата

Класс результата определяется как:

ОператорРезультат
+, -Общий предок (семейство - Числа)
*NUMERIC[p1.IntegerPart + p1.Precision + p2.IntegerPart + p2.Precision, p1.Precision + p2.Precision]
/NUMERIC[p1.IntegerPart + p1.Precision + p2.IntegerPart + p2.Precision, p1.Precision + p2.IntegerPart]

Язык

Описание арифметических операторов.

Примеры

sum(a, b) = a + b;
transform(a, b, c) = -a * (b (+) c);