Математические функции и операторы

9.3. Математические функции и операторы

Математические операторы предоставляются для многих типов PostgreSQL. Для типов, которые не имеют стандартных математических соглашений (например, типы даты/времени), в нижеследующих разделах будет описано фактическое поведение

Table 9-2 показывает доступные математические операторы.

Table 9-2. Математические операторы

ОператорОписаниеПримерРезультат
+ сложение2 + 35
- вычитание2 - 3-1
* умножение2 * 36
/ деление (целочисленное деление усекает результат)4 / 22
% деление нацело (остаток)5 % 41
^ возведение в степень2.0 ^ 3.08
|/ квадратный корень|/ 25.05
||/ кубический корень||/ 27.03
! факториал5 !120
!! факториал (префиксный оператор)!! 5120
@ значение по модулю@ -5.05
& битовое AND91 & 1511
| битовое OR32 | 335
# битовое XOR17 # 520
~ битовое NOT~1-2
<< битовый сдвиг влево1 << 416
>> битовый сдвиг вправо8 >> 22

Битовые операторы работают только для целых типов данных, в то время как другие операторы доступны для всех числовых типов данных. Битовые операторы также доступны для типов битовых строк bit и bit varying, как показоно в Table 9-10.

Table 9-3 показывает доступные математические функции. В этой таблице, dp означает тип данных double precision. Многие из этих функций предоставляются в нескольких формах с разными типами аргументов. Кроме особых случае, любые представленные формы какой-либо функции возвращают тот же тип данных, что и её аргумент. Функции работающие с данными типа double precision в основном реализованы с помощью системных библиотечных функций языка C; таким образом их точность и поведение могут отличаться в зависимости от операционной системы.

Table 9-3. Математические функции

ФункцияВозвращаемый типОписаниеПримерРезультат
abs(x) (такой же как у аргумента)значение по модулюabs(-17.4)17.4
cbrt(dp) dpкубический кореньcbrt(27.0)3
ceil(dp or numeric) (такой же как у аргумента)округление до целого в меньшую сторонуceil(-42.8)-42
ceiling(dp or numeric) (такой же как у аргумента)округление до целого в меньшую сторону (псевдоним для ceil)ceiling(-95.3)-95
degrees(dp) dpрадианты в градусыdegrees(0.5)28.6478897565412
div(y numeric, x numeric) numericцелый множитель y/xdiv(9,4)2
exp(dp or numeric) (такой же как у аргумента)экспонентаexp(1.0)2.71828182845905
floor(dp or numeric) (такой же как у аргумента)округление до целого в большую сторонуfloor(-42.8)-43
ln(dp or numeric) (такой же как у аргумента)натуральный логарифмln(2.0)0.693147180559945
log(dp or numeric) (такой же как у аргумента)десятичный логарифмlog(100.0)2
log(b numeric, x numeric)numericлогарифм по базе blog(2.0, 64.0)6.0000000000
mod(y, x) (такой же как у аргументов)остаток от деления y/xmod(9,4)1
pi() dp"π" constantpi()3.14159265358979
power(a dp, b dp) dpa возведённое в степень bpower(9.0, 3.0)729
power(a numeric, b numeric)numerica возведённое в степень bpower(9.0, 3.0)729
radians(dp) dpградусы в радианыradians(45.0)0.785398163397448
random() dpслучайное значение в диапазоне 0.0 <= x < 1.0random() 
round(dp или numeric) (такой же как у аргумента)округление до ближайшего целогоround(42.4)42
round(v numeric, s int)numericокругление до s десятичных разрядовround(42.4382, 2)42.44
setseed(dp) voidустановить начало последовательности для вызовов random() (значением между -1.0 и 1.0, inclusive)setseed(0.54823) 
sign(dp or numeric) (такой же как у аргумента)знак аргумента (-1, 0, +1)sign(-8.4)-1
sqrt(dp или numeric) (такой же как у аргумента)квадратный кореньsqrt(2.0)1.4142135623731
trunc(dp или numeric) (такой же как у аргумента)усечение дробной частиtrunc(42.8)42
trunc(v numeric, s int)numericусечение до s десятичных разрядовtrunc(42.4382, 2)42.43
width_bucket(op numeric, b1 numeric, b2 numeric, count int) intreturn the bucket to which operand would be assigned in an equidepth histogram with count buckets, in the range b1 to b2width_bucket(5.35, 0.024, 10.06, 5)3
width_bucket(op dp, b1 dp, b2 dp, count int)intreturn the bucket to which operand would be assigned in an equidepth histogram with count buckets, in the range b1 to b2width_bucket(5.35, 0.024, 10.06, 5)3

В заключение, Table 9-4 показывает доступные тригонометрические функции. Все тригонометрические функции принимают аргументы и возвращают значение типа double precision. Аргументы тригонометрических функций выражаются в радианах. Обратные функции возвращают значения выражаемые в радианах. См. выше функции преобразования элементов radians() и degrees().

Table 9-4. Тригонометрические функции

ФункцияОписание
acos(x) арккосинус
asin(x) арксинус
atan(x) арктангенс
atan2(y, x) арктангенс y/x
cos(x) косинус
cot(x) котангенс
sin(x) синус
tan(x) тангенс

Back to top

(С) Виктор Вислобоков, 2008-2023