Функции для работы с 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
значения на противоположный. Тип результата совпадает с типом аргумента.