9.3. ÐаÑемаÑиÑеÑкие ÑÑнкÑии и опеÑаÑоÑÑ
ÐаÑемаÑиÑеÑкие опеÑаÑоÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð´Ð»Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑва Ñипов Postgres Pro. Ðак ÑабоÑаÑÑ ÑÑи опеÑаÑии Ñ Ñипами, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð½ÐµÑ ÑÑандаÑÑнÑÑ ÑоглаÑений о маÑемаÑиÑеÑÐºÐ¸Ñ Ð´ÐµÐ¹ÑÑвиÑÑ (напÑимеÑ, Ñ Ñипами даÑÑ/вÑемени), Ð¼Ñ Ð¾Ð¿Ð¸Ñем в поÑледÑÑÑÐ¸Ñ ÑÐ°Ð·Ð´ÐµÐ»Ð°Ñ .
РТаблиÑе 9.2 пеÑеÑиÑÐ»ÐµÐ½Ñ Ð²Ñе доÑÑÑпнÑе маÑемаÑиÑеÑкие опеÑаÑоÑÑ.
ТаблиÑа 9.2. ÐаÑемаÑиÑеÑкие опеÑаÑоÑÑ
| ÐпеÑаÑÐ¾Ñ | ÐпиÑание | ÐÑÐ¸Ð¼ÐµÑ | РезÑлÑÑÐ°Ñ |
|---|---|---|---|
+ | Ñложение | 2 + 3 | 5 |
- | вÑÑиÑание | 2 - 3 | -1 |
* | Ñмножение | 2 * 3 | 6 |
/ | деление (пÑи ÑелоÑиÑленном делении оÑÑаÑок оÑбÑаÑÑваеÑÑÑ) | 4 / 2 | 2 |
% | оÑÑаÑок Ð¾Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ | 5 % 4 | 1 |
^ | возведение в ÑÑÐµÐ¿ÐµÐ½Ñ (вÑÑиÑлÑеÑÑÑ Ñлева напÑаво) | 2.0 ^ 3.0 | 8 |
|/ | квадÑаÑнÑй коÑÐµÐ½Ñ | |/ 25.0 | 5 |
||/ | кÑбиÑеÑкий коÑÐµÐ½Ñ | ||/ 27.0 | 3 |
! | ÑакÑоÑиал | 5 ! | 120 |
!! | ÑакÑоÑиал (пÑеÑикÑÐ½Ð°Ñ ÑоÑма) | !! 5 | 120 |
@ | модÑÐ»Ñ ÑиÑла (абÑолÑÑное знаÑение) | @ -5.0 | 5 |
& | биÑовÑй AND | 91 & 15 | 11 |
| | биÑовÑй OR | 32 | 3 | 35 |
# | биÑовÑй XOR | 17 # 5 | 20 |
~ | биÑовÑй NOT | ~1 | -2 |
<< | биÑовÑй Ñдвиг влево | 1 << 4 | 16 |
>> | биÑовÑй Ñдвиг впÑаво | 8 >> 2 | 2 |
ÐиÑовÑе опеÑаÑоÑÑ ÑабоÑаÑÑ ÑолÑко Ñ ÑелоÑÑнÑми Ñипами даннÑÑ
, Ñогда как дÑÑгие и ÑабоÑаÑÑ Ð¸ Ñ Ð¾ÑÑалÑнÑми ÑиÑловÑми Ñипами. ÐиÑовÑе опеÑаÑии Ñакже ÑабоÑаÑÑ Ñ Ð±Ð¸ÑовÑми ÑÑÑоками bit и bit varying, как показано в ТаблиÑе 9.11.
РТаблиÑе 9.3 пеÑеÑиÑÐ»ÐµÐ½Ñ Ð²Ñе ÑÑÑеÑÑвÑÑÑие маÑемаÑиÑеÑкие ÑÑнкÑии. СокÑаÑение dp в ней обознаÑÐ°ÐµÑ Ñип double precision (плаваÑÑее Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ ÑоÑноÑÑÑÑ). Ðногие из ÑÑиÑ
ÑÑнкÑий имеÑÑ Ð½ÐµÑколÑко ÑоÑм Ñ ÑазнÑми Ñипами аÑгÑменÑов. Ðа иÑклÑÑением ÑлÑÑаев, где ÑÑо Ñказано Ñвно, лÑÐ±Ð°Ñ ÑоÑма ÑÑнкÑии возвÑаÑÐ°ÐµÑ ÑезÑлÑÑÐ°Ñ Ñого же Ñипа, ÑÑо и аÑгÑменÑ. ФÑнкÑии, ÑабоÑаÑÑие Ñ Ð´Ð°Ð½Ð½Ñми double precision, в маÑÑе Ñвоей иÑполÑзÑÑÑ ÑеализаÑии из ÑиÑÑемнÑÑ
библиоÑек ÑеÑвеÑа, поÑÑÐ¾Ð¼Ñ ÑоÑноÑÑÑ Ð¸ поведение в гÑаниÑнÑÑ
ÑлÑÑаÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ ÑиÑÑÐµÐ¼Ñ ÑеÑвеÑа.
ТаблиÑа 9.3. ÐаÑемаÑиÑеÑкие ÑÑнкÑии
РТаблиÑе 9.4 пеÑеÑиÑÐ»ÐµÐ½Ñ Ð²Ñе ÑÑнкÑии Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑаÑии ÑлÑÑайнÑÑ ÑиÑел.
ТаблиÑа 9.4. СлÑÑайнÑе ÑÑнкÑии
ХаÑакÑеÑиÑÑики знаÑений, возвÑаÑаемÑÑ
ÑÑнкÑией завиÑÑÑ Ð¾Ñ ÑиÑÑемÑ. ÐÐ»Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² кÑипÑогÑаÑии они непÑигоднÑ; алÑÑеÑнаÑÐ¸Ð²Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² pgcrypto.random()
ÐаконеÑ, в ТаблиÑе 9.5 пеÑеÑиÑÐ»ÐµÐ½Ñ Ð²Ñе ÑÑигономеÑÑиÑеÑкие ÑÑнкÑии. ÐÑе ÑÑи ÑÑнкÑии пÑинимаÑÑ Ð°ÑгÑменÑÑ Ð¸ возвÑаÑаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ñипа double precision. ÐÑгÑменÑÑ ÑÑигономеÑÑиÑеÑкиÑ
ÑÑнкÑий вÑÑажаÑÑÑÑ Ð² ÑадианаÑ
. Также в ÑадианаÑ
вÑÑажаÑÑÑÑ ÑезÑлÑÑаÑÑ Ð¾Ð±ÑаÑнÑÑ
ÑÑнкÑий. ÐÐ»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ ÑпомÑнÑÑÑе вÑÑе ÑÑнкÑии и radians().degrees()
ТаблиÑа 9.5. ТÑигономеÑÑиÑеÑкие ÑÑнкÑии