ΠΠΎΡΠ»Π΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ PostgreSQL ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΡ ΡΡΠ°Π·Ρ: Β«Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π½Π°ΡΠΊΠΈ, ΠΈ Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡΒ» (ΠΏΡΠΈ ΡΡΠΎΠΌ Π±Π»Π°Π³ΠΎΡΠ°Π·ΡΠΌΠ½ΠΎ ΠΎΡΡΡΠ»Π°Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΡ IEEE 754). Π§ΡΠΎ Π·Π° ΠΎΡΠΈΠ±ΠΊΠΈ Π·Π΄Π΅ΡΡ ΠΈΠΌΠ΅ΡΡΡΡ Π² Π²ΠΈΠ΄Ρ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΈΡ ΠΏΠΎ-ΠΏΠΎΡΡΠ΄ΠΊΡ, ΠΈ ΡΠΊΠΎΡΠΎ ΡΡΠ°Π½Π΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΠ½ΠΎΠ²Π° Π²Π·ΡΠ»ΡΡ Π·Π° ΠΏΠ΅ΡΠΎ.
ΠΠΎΠ·ΡΠΌΠ΅ΠΌ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ:
********* ΠΠΠΠ ΠΠ‘ *********
SELECT 0.1::REAL;
**************************
float4
--------
0.1
(1 ΡΡΡΠΎΠΊΠ°)
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ β ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ 0.1. ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ°Π²Π½ΠΈΠΌ Π΅Π³ΠΎ Ρ 0.1:
********* ΠΠΠΠ ΠΠ‘ *********
SELECT 0.1::REAL = 0.1;
**************************
?column?
----------
f
(1 ΡΡΡΠΎΠΊΠ°)
ΠΠ΅ ΡΠ°Π²Π½Ρ! Π§ΡΠΎ Π·Π° ΡΡΠ΄Π΅ΡΠ°! ΠΠΎ Π΄Π°Π»ΡΡΠ΅-Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠΎ-ΡΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ, ΠΌΠΎΠ», Ρ Π·Π½Π°Ρ, ΡΡΠΎ REAL ΠΏΠ»ΠΎΡ ΠΎ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ Ρ Π΄ΡΠΎΠ±ΡΠΌΠΈ, Π½Ρ ΡΠ°ΠΊ Ρ Π±ΡΠ΄Ρ ΡΡΠ΄Π° Π·Π°Π½ΠΎΡΠΈΡΡ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°, Ρ Π½ΠΈΠΌΠΈ-ΡΠΎ ΡΠΎΡΠ½ΠΎ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ. ΠΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΡΠΈΡΠ»ΠΎ 123 456 789 ΠΊ ΡΠΈΠΏΡ REAL:
********* ΠΠΠΠ ΠΠ‘ *********
SELECT 123456789::REAL::INT;
**************************
int4
-----------
123456792
(1 ΡΡΡΠΎΠΊΠ°)
Π ΠΎΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π° 3! ΠΡΠ΅, Π±Π°Π·Π° ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΡΠΈΠ»Π°ΡΡ ΡΡΠΈΡΠ°ΡΡ! ΠΠ»ΠΈ ΠΌΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΌΠ°ΡΡΠ°ΡΡΡ. ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π»ΡΠ±ΠΎΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π»ΠΎΠΆΠΈΡΡ ΠΏΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΡΠΌ Π΄Π΅ΡΡΡΠΈ. Π’Π°ΠΊ, ΡΠΈΡΠ»ΠΎ 123.456 Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 1*102 + 2*101 + 3*100 + 4*10-1 + 5*10-2 + 6*10-3. ΠΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΡΠΌ Π΄Π²ΠΎΠΉΠΊΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΡΠΈΡΠ»ΠΎ 5.625 Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ 101.101 ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 1*22 + 0*21 + 1*20 + 1*2-1 + 0*2-2 + 1*2-3. Π Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° Π΄Π°ΡΡ ΡΠ΅Π»ΡΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° (1, 2, 4, 8, 16 ΠΈ Ρ.Π΄.), ΡΠΎ Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²ΡΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ (0.5, 0.25, 0.125, 0,0625 ΠΈ Ρ.Π΄.). ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅ Π²ΡΡΠΊΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ Π΄ΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ Π΄ΡΠΎΠ±ΠΈ. Π’Π°ΠΊ, Π½Π°ΡΠ΅ ΠΏΡΠ΅ΡΠ»ΠΎΠ²ΡΡΠΎΠ΅ 0.1 Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ Π΄ΡΠΎΠ±ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0.0(0011). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π° Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΠΎΠ²ΠΎΡΡ Π² ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ , Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ β Π·Π½Π°ΠΊΠ°, ΠΌΠ°Π½ΡΠΈΡΡΡ ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΠ½Π°ΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠ»ΡΡ, Π»ΠΈΠ±ΠΎ ΠΌΠΈΠ½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° Π½Π΅Π³ΠΎ ΠΎΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ. Π Π²ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ ΠΌΠ°Π½ΡΠΈΡΡΡ ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ. Π’Π°ΠΊ, Π΄Π»Ρ ΡΠΈΠΏΠ° REAL Π΄Π»ΠΈΠ½Π° ΠΌΠ°Π½ΡΠΈΡΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 23 Π±ΠΈΡ (ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ, ΡΠ°Π²Π½ΡΠΉ 1, Π½Π΅ΡΠ²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΠΌΠ°Π½ΡΠΈΡΡΡ, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ 24), Π° ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΡ β 8 Π±ΠΈΡ. ΠΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ 32 Π±ΠΈΡ, ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡΠ°. Π Π΄Π»Ρ ΡΠΈΠΏΠ° DOUBLE PRECISION Π΄Π»ΠΈΠ½Π° ΠΌΠ°Π½ΡΠΈΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΆΠ΅ 52 Π±ΠΈΡ, ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΡ β 11 Π±ΠΈΡ, Π² ΡΡΠΌΠΌΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ 64 Π±ΠΈΡ, ΠΈΠ»ΠΈ 8 Π±Π°ΠΉΡ. ΠΠΎΠ»ΡΡΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ PostgreSQL Π΄Π»Ρ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΏΠ°ΠΊΡΠ΅ΠΌ Π½Π°ΡΠ΅ ΡΠΈΡΠ»ΠΎ 0.1 Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² ΠΎΠ±Π° ΡΠΈΠΏΠ° β REAL ΠΈ DOUBLE PRECISION. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΠΊ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΡ Ρ Π½Π°Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ, ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° ΠΌΠ°Π½ΡΠΈΡΡΠ΅ (Ρ ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΡΠΊΠ°Ρ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ Π½ΡΠ»Π΅Π²ΡΡ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΡΡΡΠΆΠ΅Π»ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡ ΠΎΡ ΡΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ β ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡ IEEE 754). Π§ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ? Π Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΡΡΠΎΡΠΊΠ΅ Ρ ΠΏΡΠΈΠ²Π΅Π΄Ρ Β«ΠΌΠ°Π½ΡΠΈΡΡΡΒ» Π΄Π»Ρ ΡΠΈΠΏΠ° REAL (Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π±ΠΈΡΠ° Π² 1 Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΠΈΠ½Π°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ 0.099999β¦), Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΉ β Π΄Π»Ρ ΡΠΈΠΏΠ° DOUBLE PRECISION:
0.000110011001100110011001101
0.00011001100110011001100110011001100110011001100110011001
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ Π΄Π²Π° ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΡ ΡΠΈΡΠ»Π°! ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½ΡΠ»ΡΠΌΠΈ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ (Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ β ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΆΠΈΡΠ½ΡΠΌ Π΅Π΄ΠΈΠ½ΠΈΡΠΊΠΈ). ΠΡΠΈΠΌ ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ 0.1 ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ DOUBLE PRECISION, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠΈΡΠ»ΠΎΠΌ ΡΠΈΠΏΠ° REAL. ΠΠ±Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ, ΠΈ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΎΠ²Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΡΠ΅. ΠΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π°ΠΏΡΠΎΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π²ΡΡΠ°Π»ΠΎ Π½Π° ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠ°:
********* ΠΠΠΠ ΠΠ‘ *********
SELECT 0.1::REAL > 0.1::DOUBLE PRECISION;
**************************
?column?
----------
t
(1 ΡΡΡΠΎΠΊΠ°)
Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° 0.1 ΠΊ REAL ΠΈ DOUBLE PRECISION ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠ²Π΅Ρ Π½Π° Π·Π°Π³Π°Π΄ΠΊΡ:
********* ΠΠΠΠ ΠΠ‘ *********
SELECT 0.1::REAL::DOUBLE PRECISION;
**************************
float8
-------------------
0.100000001490116
(1 ΡΡΡΠΎΠΊΠ°)
ΠΡΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΠΈ ΡΡΠ΅ΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅. Π§ΠΈΡΠ»ΠΎ 123 456 789 ΠΏΡΠΎΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡ Π² 24 Π±ΠΈΡΠ° ΠΌΠ°Π½ΡΠΈΡΡΡ (23 ΡΠ²Π½ΡΡ + 1 ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌΡΠΉ). ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π² 24 Π±ΠΈΡΠ°, Π±ΡΠ΄Π΅Ρ 224-1 = 16 777 215. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠ΅ ΡΠΈΡΠ»ΠΎ 123 456 789 ΠΎΠΊΡΡΠ³Π»ΡΠ΅ΡΡΡ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎΠ³ΠΎ 123 456 792. Π‘ΠΌΠ΅Π½ΠΈΠ² ΡΠΈΠΏ Π½Π° DOUBLE PRECISION, ΠΌΡ ΡΠΆΠ΅ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ:
********* ΠΠΠΠ ΠΠ‘ *********
SELECT 123456789::DOUBLE PRECISION::INT;
**************************
int4
-----------
123456789
(1 ΡΡΡΠΎΠΊΠ°)
ΠΠΎΡ ΠΈ Π²ΡΠ΅. ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠ΄Π΅Ρ. ΠΠΎ Π²ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ β Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΠΎΠ²ΠΎΠ΄ ΠΏΡΠΈΠ·Π°Π΄ΡΠΌΠ°ΡΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ΅Π½ ΡΠΈΠΏ REAL. ΠΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ»ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ β Π±ΡΡΡΡΠΎΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Ρ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ ΠΈΠΌΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠΎΡΠ΅ΡΠ΅ΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΠΎ Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ, ΠΎΠΏΡΠ°Π²Π΄ΡΠ²Π°ΡΡΠΈΠΌ ΡΡΠΎΠ»Ρ ΡΠ°ΡΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°? ΠΠ΅ Π΄ΡΠΌΠ°Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com