Примеры NORMALIZE_DECFLOAT
DECFLOAT
NORMALIZE_DECFLOAT(12.00) -- возвращает 12
NORMALIZE_DECFLOAT(120) -- возвращает 1.2E+2
Функции для работы с контекстными переменными
Функции для работы со строками
Функции для работы с датой и временем
Функции для работы с типом BLOB
Функции для работы с типом DECFLOAT
NORMALIZE_DECFLOAT
DECFLOAT
NORMALIZE_DECFLOAT(12.00) -- возвращает 12
NORMALIZE_DECFLOAT(120) -- возвращает 1.2E+2
QUANTIZE()
DSQL, PSQL
QUANTIZE (decfloat_value, exp_value)
Параметр | Описание |
---|---|
decfloat_value |
Значение или выражение типа |
exp_value |
Значение или выражение для использования в качестве показателя степени;должно иметь тип |
DECFLOAT
Функция QUANTIZE
возвращает значение первого аргумента масштабированным с использованием второго значения в качестве шаблона.Другими словами функция QUANTIZE
возвращает значение DECFLOAT
, равное по значению (за исключением любого округления) и знаку decfloat_value, а также экспоненте, равной по значению экспоненте exp_value.Функцию QUANTIZE
можно использовать для реализации округления с точностью до нужного знака, например, округление до ближайшего цента с использованием установленного режима округления DECFLOAT
.
Тип возвращаемого значения — DECFLOAT(16)
, если оба аргумента — DECFLOAT(16)
, в противном случае тип результата — DECFLOAT(34)
.
Note
|
Целевой показатель — это показатель, используемый в формате хранения |
Если показатель decfloat_value больше, чем показатель exp_value, коэффициент decfloat_value умножается на степень десяти, и его показатель уменьшается, если показатель меньше, то его коэффициент округляется с использованием текущего режима округления decfloat, и его показатель увеличивается.
Когда невозможно достичь целевого показателя экспоненты, поскольку коэффициент превысит целевую точность (16 или 34 десятичных знака), то либо возникает ошибка “Decfloat float invalid operation”, либо возвращается NaN
(в зависимости от текущего конфигурация decfloat traps).
Ограничений на exp_value практически нет.Однако почти во всех случаях использования NaN
/sNaN
/Infinity
будет вызывать исключение(если это не разрешено текущей конфигурацией decfloat traps)
Если одно из значений NULL
, то результатом функции будет NULL
и т.д.
QUANTIZE
select v, pic, quantize(v, pic) from examples;
V PIC QUANTIZE ======================= ===================== ================== 3.16 0.001 3.160 3.16 0.01 3.16 3.16 0.1 3.2 3.16 1 3 3.16 1E+1 0E+1 -0.1 1 -0 0 1E+5 0E+5 316 0.1 316.0 316 1 316 316 1E+1 3.2E+2 316 1E+2 3E+2
TOTALORDER()
DSQL, PSQL
TOTALORDER (decfloat1, decfloat2)
Параметр | Описание |
---|---|
decfloat1, decfloat2 |
Значение или выражение типа |
SMALLINT
Функция TOTALORDER
сравнивает два значения типа DECFLOAT
, включая специальные значения.Сравнение является точным. Замыкающие нули учитываются при сравнении.
Функция возвращает:
-1 — если первое значение меньше второго;
0 — если значения равны;
1 — если первое значение больше второго.
Сравнений значений DEFLOAT
происходит в следующем порядке:
-nan < -snan < -inf < -0.1 < -0.10 < -0 < 0 < 0.10 < 0.1 < inf < snan < nan
См. также:[fblangref-scalarfuncs-comparedecfloat]
В Firebird 4.0 поддерживается только подмножество симметричных алгоритмов шифрования (как блочных так и потоковых), так и RSA.