Функции для работы с DECIMAL#
DECIMAL литералы#
Используйте синтаксис DECIMAL 'xxxxxxx.yyyyyyy' для определения DECIMAL литерала.
Precision будет равен количеству цифр в литерале (включая конечные и ведущие нули). Scale будет равен количеству цифр дробной части (включая конечные нули).
Пример литерала |
Тип данных |
|---|---|
|
|
|
|
|
|
Арифметические операторы#
CedrusData поддерживает стандартные математические операторы для DECIMAL типа.
Таблица ниже поясняет правила расчета precision и scale результирующего значения.
Предположим, что x имеет тип DECIMAL(xp, xs), а y имеет тип DECIMAL(yp, ys).
Операция |
Precision результата |
Scale результата |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Если результат операции не может быть точно представлен с заданными precision и scale, CedrusData возвращает ошибку Value is out of range.
При работе с DECIMAL типами с разным precision и scale, сначала происходит приведение значений к общему типу.
Для типов со значением precision, близкому к предельному (38), это может привести к ошибке Value is out of range.
Например, общим типом для decimal(38, 0) и decimal(38, 1) будет тип decimal(38, 1),
но некоторые значения decimal(38, 0) не могут быть точно представлены с помощью типа (38, 1).
Операторы сравнения#
Все стандартные Операции сравнения работают для DECIMAL типа.
Унарные операторы#
Оператор - изменяет знак DECIMAL значения на противоположный. Тип результата совпадает с типом аргумента.