9.3. Математические функции и операторы#
9.3. Математические функции и операторы #
Для многих типов Tantor BE предоставляются математические операторы. Для типов без стандартных математических соглашений (например, типы даты/времени) мы описываем фактическое поведение в последующих разделах.
Таблица 9.4 показывает математические операторы, доступные для стандартных числовых типов.
Если не указано иное, операторы, показанные как принимающие numeric_type
, доступны для всех типов smallint
, integer
, bigint
, numeric
, real
и double precision
.
Операторы, показанные как принимающие integral_type
, доступны для типов smallint
, integer
и bigint
.
За исключением указанных случаев, каждая форма оператора возвращает тот же тип данных, что и его аргумент(ы). Вызовы с участием нескольких типов аргументов, такие как integer
+
numeric
, разрешаются с использованием типа, указанного позже в этих списках.
Таблица 9.4. Математические операторы
Оператор Описание Пример(ы) |
---|
Дополнение
|
Унарный плюс (без операции)
|
Вычитание
|
Отрицание
|
Умножение
|
Деление (для целочисленных типов, деление обрезает результат в сторону нуля)
|
Остаток; доступно для
|
Возведение в степень
В отличие от типичной математической практики, по умолчанию несколько использований
|
Квадратный корень
|
Кубический корень
|
Абсолютное значение
|
Побитовое И
|
Побитовое ИЛИ
|
Побитовое исключающее ИЛИ
|
Побитовое НЕ
|
Побитовый сдвиг влево
|
Побитовый сдвиг вправо
|
Таблица 9.5 показывает доступные математические функции.
Многие из этих функций предоставляются в нескольких формах с различными типами аргументов.
За исключением случаев, указанных отдельно, любая данная форма функции возвращает тот же тип данных, что и ее аргумент(ы); случаи смешанных типов разрешаются так же, как и для операторов, описанных выше.
Функции, работающие с данными типа double precision
, в основном реализованы на основе библиотеки C хост-системы; точность и поведение в граничных случаях могут варьироваться в зависимости от хост-системы.
Таблица 9.5. Математические функции
Таблица 9.6 показывает функции для генерации случайных чисел.
Таблица 9.6. Случайные функции
Функция random()
использует детерминированный
псевдослучайный генератор чисел.
Она быстрая, но не подходит для криптографических
приложений; см. модуль pgcrypto для более
безопасной альтернативы.
Если вызвана функция setseed()
, серия результатов
последующих вызовов random()
в текущей сессии
может быть повторена путем повторного вызова setseed()
с тем же
аргументом.
Без предварительного вызова setseed()
в той же
сессии, первый вызов random()
получает начальное значение
из зависящего от платформы источника случайных битов.
Эти замечания в равной степени применимы к random_normal()
.
Таблица 9.7 показывает доступные тригонометрические функции. Каждая из этих функций имеет две варианта: один измеряет углы в радианах, а другой - в градусах.
Таблица 9.7. Тригонометрические функции
Примечание
Еще один способ работы с углами, измеряемыми в градусах, - использовать функции преобразования единиц
и radians()
, показанные ранее. Однако предпочтительнее использовать тригонометрические функции, основанные на градусах, так как это позволяет избежать ошибок округления для особых случаев, таких как degrees()
sind(30)
.
Таблица 9.8 показывает доступные гиперболические функции.
Таблица 9.8. Гиперболические функции