FirebirdSQL logo
Длина литералов DECFLOAT

Значение типа DECFLOAT можно задать числовым литералом в научной нотации, только еслимантисса состоит из 20 или более цифр, или абсолютный показатель степени больше 308. В противном случае такие литералыинтерпретируются как DOUBLE PRECISION. Точные числовые литералы с 40 или более цифрами — фактически 39 цифр, если они больше максимального значения INT128 также обрабатываются как DECFLOAT (34).

В качестве альтернативы можно использовать строковый литерал и явно привести к желаемому типу DECFLOAT.

Длина литералов типа DECFLOAT ограничена 1024 символами.Для более длинных значений вам придётся использовать научную нотацию.Например, значение 0.0<1020 zeroes>11 не может быть записано как литерал, вместо него вы можете использовать аналогичную научную нотацию: 1.1E-1022.Аналогично 10<1022 zeroes>0 может быть записано как 1.0E1024.

Литералы, содержащие более 34 значащих цифр, округляются с использованием режима округления DECFLOAT установленного для сеанса.

DECFLOAT и функции
Использование обычных функций

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

ABS

CEILING

EXP

FLOOR

LN

LOG

LOG10

POWER

SIGN

SQRT

Агрегатные функции SUM, AVG, MIN и MAX тоже работают с типом DECFLOAT.Все статистические агрегатные функции (такие как STDDEV или CORR, но не ограничено ими) могут работать с данными типа DECFLOAT.

Специальные функции для DECFLOAT

Firebird поддерживает 4 функции, которые созданы специально для поддержки типа DECFLOAT:

COMPARE_DECFLOAT

сравнивает два значения DECFLOAT как равные, разные или неупорядоченные

NORMALIZE_DECFLOAT

принимает единственный аргумент DECFLOAT и возвращает его в простейшей форме

QUANTIZE

принимает два аргумента DECFLOAT и возвращает первый аргумент, масштабированный с использованием второго значения в качестве образца

TOTALORDER

выполняет точное сравнение двух значений DECFLOAT