4.3. 算術関数と演算子

Table 4-2. 算術演算子

名前説明結果
+ 2 + 35
- 2 - 3-1
* 2 * 36
/ 商(整数では切り捨てされます。) 4 / 22
% 余り5 % 41
^ 2.0 ^ 3.08.0
|/ 平方根|/ 25.05.0
||/ 3乗根||/ 27.03
! 階乗5 !120
!! 階乗(前演算子)!! 5120
@ 絶対値@ -5.05.0
& バイナリのAND91 & 1511
| バイナリのOR32 | 335
# バイナリのXOR17 # 520
~ バイナリのNOT~1-2
<< 理論左シフト1 << 416
>> 理論右シフト8 >> 22

"binary"演算子はBIT型や BIT VARYING型などのビット列型でも使用できます。

Table 4-3. ビット列のビット演算子

結果
B'10001' & B'01101'00001
B'10001' | B'01101'11101
B'10001' # B'01101'11110
~ B'10001'01110
B'10001' << 301000
B'10001' >> 200100
ビット列演算において、&|#の引数の大きさは等しくなければなりません。 ご覧の通り、ビットシフトを行う際、列のオリジナルの長さは 記憶されます。

Table 4-4. 算術関数

関数戻り値説明結果
abs(x)(引数と同じ型)絶対値abs(-17.4)17.4
cbrt(double precision)double precision3乗根cbrt(27.0)3.0
ceil(numeric)numeric引数よりも小さくない整数ceil(-42.8)-42
degrees(double precision)double precisionラジアンを度に変換degrees(0.5)28.6478897565412
exp(double precision)double precision指数関数exp(1.0)2.71828182845905
floor(numeric)numeric 引数よりも小さい、最も大きい数 floor(-42.8)-43
ln(double precision)double precision自然対数ln(2.0)0.693147180559945
log(double precision)double precision底10(10 base)の対数log(100.0)2.0
log(base numeric, x numeric) numeric指定された底の対数log(2.0, 64.0)6.0
mod(y, x)(same as argument types)y/ xの余り mod(9,4)1
pi()double precision円周率 定数pi()3.14159265358979
pow(double precision, double precision)double precision 指定された指数まで引きあげ pow(9.0, 3.0)729.0
radians(double precision)double precision度をラジアンに変換radians(45.0)0.785398163397448
random()double precision 0.0から1.0までのランダムな数 random() 
round(double precision)double precision四捨五入round(42.4)42
round(value numeric, scale integer) numeric 任意の小数桁まで四捨五入 round(42.4382, 2)42.44
sqrt(double precision)double precision平方根sqrt(2.0)1.4142135623731
trunc(double precision)double precisionゼロに近い数に切り捨てtrunc(42.8)42
trunc(value numeric, scale integer) numeric 任意の小数点に切り捨て round(42.4382, 2)42.43

exp関数、ln関数、 log関数、pow関数、 round(引数1)関数、sqrt関数、 trunc(引数1)関数ではdouble precision型の変わりにnumeric型を使用することも 可能です。これらの多くの関数はホストシステムのCライブラリの上に 構築されていますので、場合によってはOS間での動作が異ることが あるかも知れません。

Table 4-5. 三角関数

関数説明
acos(x)アークコサイン
asin(x)アークサイン
atan(x)アークタンジェント
atan2(x, y) y/ xのアークタンジェント
cos(x)コサイン
cot(x)コタンジェント
sin(x)サイン
tan(x)タンジェント

すべての三角関数の返り値はdouble precision型です。