рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░рдХрд╛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ, рд╡рд╛ REAL рд╕рдБрдЧ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреБрд╣реЛрд╕реН

рдкреНрд░рдХрд╛рд╢рди рдкрдЫрд┐ рд▓реЗрдЦ PostgreSQL рдорд╛ рдЯрд╛рдЗрдк рдЧрд░реНрдиреЗ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛, рдкрд╣рд┐рд▓реЛ рдЯрд┐рдкреНрдкрдгреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХрдард┐рдирд╛рдЗрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдерд┐рдпреЛред рдореИрд▓реЗ рдорд▓рд╛рдИ рдЙрдкрд▓рдмреНрдз SQL рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдХреЛрдбрдорд╛ рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╣реЗрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ рдХрд┐ рдЙрдиреАрд╣рд░реВрд▓реЗ рдХрддрд┐ рдкрдЯрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН рднрдиреЗрд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ред рдпреЛ рдЬрд╛рдиреНрдЫ рдХрд┐ рдпреЛ рдзреЗрд░реИ рдкрдЯрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╕рдзреИрдВ рдпрд╕рдХреЛ рдкрдЫрд╛рдбрд┐ рдЦрддрд░рд╛рд╣рд░реВ рдмреБрдЭреНрджреИрдирдиреНред рд░ рдпреЛ рддрдереНрдпрдХреЛ рдмрд╛рд╡рдЬреБрдж рдЗрдиреНрдЯрд░рдиреЗрдЯ рд░ Habr├й рдорд╛ рдХрдореНрдкреНрдпреВрдЯрд░ рдореЗрдореЛрд░реАрдорд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдзреЗрд░реИ рд░рд╛рдореНрд░рд╛ рд▓реЗрдЦрд╣рд░реВ рдЫрдиреНред рддреНрдпрд╕рдХрд╛рд░рдг, рдпрд╕ рд▓реЗрдЦрдорд╛ рдо PostgreSQL рдорд╛ рддреНрдпрд╕реНрддрд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫреБ, рд░ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рд╣рд░реВрд▓рд╛рдИ рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╣реЗрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫреБ, рддрд╛рдХрд┐ SQL рдХреНрд╡реЗрд░реА рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рддрд┐рдиреАрд╣рд░реВрдмрд╛рдЯ рдмрдЪреНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреЗрдЫред

PostgreSQL рдХрд╛рдЧрдЬрд╛рддрд▓реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдкрдорд╛ рдмрддрд╛рдЙрдБрдЫ: "рдХрдореНрдкреНрдпреБрдЯреЗрд╢рдирдХреЛ рдХреНрд░рдордорд╛ рддреНрдпрд╕реНрддрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрд░рдЪрд╛рд░ рдЧрдгрд┐рдд рд░ рдХрдореНрдкреНрдпреБрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рдирдХреЛ рд╕рдореНрдкреВрд░реНрдг рд╢рд╛рдЦрд╛рдХреЛ рд╡рд┐рд╖рдп рд╣реЛ, рд░ рдпрд╣рд╛рдБ рдХрднрд░ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди" (рдмреБрджреНрдзрд┐рдкреВрд░реНрд╡рдХ рдкрд╛рдардХрд▓рд╛рдИ IEEE 754 рдорд╛рдирдХрдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрджрд╛)ред рдпрд╣рд╛рдБ рдХрд╕реНрддрд╛ рдкреНрд░рдХрд╛рд░рдХрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╣реБрдиреН? рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХреНрд░рдордмрджреНрдз рд░реВрдкрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реМрдВ, рд░ рдпреЛ рдЫрд┐рдЯреНрдЯреИ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреЗрдЫ рдХрд┐рди рдореИрд▓реЗ рдлреЗрд░рд┐ рдХрд▓рдо рдЙрдард╛рдПред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрд░реЛрдз рдЧрд░реМрдВ:

********* ╨Ч╨Р╨Я╨а╨Ю╨б *********
SELECT 0.1::REAL;
**************************
float4
--------
    0.1
(1 ╤Б╤В╤А╨╛╨║╨░)

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдХреЗрд╣рд┐ рд╡рд┐рд╢реЗрд╖ рджреЗрдЦреНрдиреЗ рдЫреИрдиреМрдВ - рд╣рд╛рдореА рдЕрдкреЗрдХреНрд╖рд┐рдд 0.1 рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред рддрд░ рдЕрдм рдпрд╕рд▓рд╛рдИ реж.рез рдорд╛ рддреБрд▓рдирд╛ рдЧрд░реМрдВ:

********* ╨Ч╨Р╨Я╨а╨Ю╨б *********
SELECT 0.1::REAL = 0.1;
**************************
?column?
----------
f
(1 ╤Б╤В╤А╨╛╨║╨░)

рдмрд░рд╛рдмрд░ рдЫреИрди! рдХрд╕реНрддреЛ рдЪрдорддреНрдХрд╛рд░! рддрд░ рдЕрдЧрд╛рдбрд┐, рдердкред рдХрд╕реИрд▓реЗ рднрдиреНрдиреЗрдЫ, рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ REAL рд▓реЗ рдЕрдВрд╢рд╣рд░реВрд╕рдБрдЧ рдирд░рд╛рдореНрд░реЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдо рддреНрдпрд╣рд╛рдБ рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреЗрдЫреБ, рд░ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рд╕рдмреИ рдХреБрд░рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдареАрдХ рд╣реБрдиреЗрдЫред рдареАрдХ рдЫ, REAL рдорд╛ 123 рдирдореНрдмрд░ рдХрд╛рд╕реНрдЯ рдЧрд░реМрдВ:

********* ╨Ч╨Р╨Я╨а╨Ю╨б *********
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, рдЖрджрд┐)ред рд╕рдорд╕реНрдпрд╛ рддреНрдпрд╣реА рд╣реЛ рдкреНрд░рддреНрдпреЗрдХ рджрд╢рдорд▓рд╡рд▓рд╛рдИ рд╕реАрдорд┐рдд рдмрд╛рдЗрдирд░реА рдЕрдВрд╢рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред рдпрд╕рд░реА, рдмрд╛рдЗрдирд░реА рдЕрдВрд╢рдХреЛ рд░реВрдкрдорд╛ рд╣рд╛рдореНрд░реЛ рдХреБрдЦреНрдпрд╛рдд 0.1 рдЖрд╡рдзрд┐рдХ рдорд╛рди 0.0(0011) рдХреЛ рд░реВрдкрдорд╛ рджреЗрдЦрд╛ рдкрд░реНрджрдЫред рдлрд▓рд╕реНрд╡рд░реВрдк, рдХрдореНрдкреНрдпреВрдЯрд░ рдореЗрдореЛрд░реАрдорд╛ рдпреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдЕрдиреНрддрд┐рдо рдорд╛рди рдмрд┐рдЯ рдЧрд╣рд┐рд░рд╛рдЗрдХреЛ рдЖрдзрд╛рд░рдорд╛ рднрд┐рдиреНрди рд╣реБрдиреЗрдЫред

рдЕрдм рдХрдореНрдкреНрдпреВрдЯрд░ рдореЗрдореЛрд░реАрдорд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рдХрд╕рд░реА рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ рднрдиреЗрд░ рд╕рдореНрдЭрдиреЗ рд╕рдордп рд╣реЛред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдорд╛ рддреАрди рдореБрдЦреНрдп рднрд╛рдЧрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН - рдЪрд┐рдиреНрд╣, рдордиреНрдЯрд┐рд╕рд╛ рд░ рдШрд╛рддрд╛рдВрдХред рдЪрд┐рдиреНрд╣ рдпрд╛ рдд рдкреНрд▓рд╕ рд╡рд╛ рдорд╛рдЗрдирд╕ рд╣реБрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдмрд┐рдЯ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рддрд░ mantissa рд░ exponent рдХреЛ рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫред рддреНрдпрд╕реЛрднрдП, REAL рдкреНрд░рдХрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐, mantissa рдХреЛ рд▓рдореНрдмрд╛рдЗ 23 рдмрд┐рдЯ рд╣реЛ (1 рдХреЛ рдмрд░рд╛рдмрд░ рдПрдХ рдмрд┐рдЯ рдорд╛рдиреНрдЯрд┐рд╕рд╛рдХреЛ рд╕реБрд░реБрдорд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдердкрд┐рдПрдХреЛ рдЫ, рд░ рдкрд░рд┐рдгрд╛рдо 24 рд╣реЛ), рд░ рдШрд╛рддрд╛рдВрдХ 8 рдмрд┐рдЯ рд╣реЛред рдХреБрд▓ 32 рдмрд┐рдЯ, рд╡рд╛ 4 рдмрд╛рдЗрдЯреНрд╕ рдЫред рд░ рдбрдмрд▓ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐, рдореНрдпрд╛рдиреНрдЯрд┐рд╕рд╛рдХреЛ рд▓рдореНрдмрд╛рдЗ 52 рдмрд┐рдЯ рд╣реБрдиреЗрдЫ, рд░ рдШрд╛рддрд╛рдВрдХ 11 рдмрд┐рдЯ рд╣реБрдиреЗрдЫ, рдХреБрд▓ 64 рдмрд┐рдЯ, рд╡рд╛ 8 рдмрд╛рдЗрдЯреНрд╕рдХреЛ рд▓рд╛рдЧрд┐ред PostgreSQL рд▓реЗ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЛрдЗрдиреНрдЯ рдирдореНрдмрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдЪреНрдЪ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред

рд╣рд╛рдореНрд░реЛ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ реж.рез рд▓рд╛рдИ рд░рд┐рдпрд▓ рд░ рдбрдмрд▓ рдкреНрд░реЗрд╕рд┐рдЬрди рджреБрд╡реИ рдкреНрд░рдХрд╛рд░рдорд╛ рдкреНрдпрд╛рдХ рдЧрд░реМрдВред рдШрд╛рддрд╛рдВрдХрдХреЛ рдЪрд┐рдиреНрд╣ рд░ рдорд╛рди рд╕рдорд╛рди рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореА рдордиреНрдЯрд┐рд╕рд╛рдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВ (рдореИрд▓реЗ рдЬрд╛рдирд╛рдЬрд╛рдиреА рдШрд╛рддрд╛рдВрдХ рд░ рд╢реВрдиреНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрд▓рд╛рдИ рдЫреЛрдбреНрдЫреБ, рдХрд┐рдирдХрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдмреБрдЭрд╛рдЗрд▓рд╛рдИ рдЬрдЯрд┐рд▓ рдмрдирд╛рдЙрдБрдЫрдиреН рд░ рд╕рд╛рд░рдмрд╛рдЯ рд╡рд┐рдЪрд▓рд┐рдд рд╣реБрдиреНрдЫрдиреНред рд╕рдорд╕реНрдпрд╛рдХреЛ, рдпрджрд┐ рд░реБрдЪрд┐ рдЫ рднрдиреЗ, IEEE 0.1 рдорд╛рдирдХ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН)ред рд╣рд╛рдореАрд▓реЗ рдХреЗ рдкрд╛рдЙрдиреЗрдЫреМрдВ? рд╢реАрд░реНрд╖ рд░реЗрдЦрд╛рдорд╛ рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ "рдордиреНрдЯрд┐рд╕рд╛" рджрд┐рдиреЗрдЫреБ (рдЕрдиреНрддрд┐рдо рдмрд┐рдЯрдХреЛ рд░рд╛рдЙрдиреНрдбрд┐рдЩрд▓рд╛рдИ 754 рджреНрд╡рд╛рд░рд╛ рдирд┐рдХрдЯрддрдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рдирдореНрдмрд░рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рдЕрдиреНрдпрдерд╛ рдпреЛ 1 рд╣реБрдиреЗрдЫ...), рд░ рддрд▓рдХреЛ рд░реЗрдЦрд╛рдорд╛ - рдХреЛ рд▓рд╛рдЧреАред рдбрдмрд▓ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░:

0.000110011001100110011001101
0.00011001100110011001100110011001100110011001100110011001

рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдпреА рджреБрдИ рдкреВрд░реНрдгрддрдпрд╛ рдлрд░рдХ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рд╣реБрдиреН! рддреНрдпрд╕рдХрд╛рд░рдг, рддреБрд▓рдирд╛ рдЧрд░реНрджрд╛, рдкрд╣рд┐рд▓реЛ рдирдореНрдмрд░рд▓рд╛рдИ рд╢реВрдиреНрдпрд▓реЗ рдкреНрдпрд╛рдб рдЧрд░рд┐рдиреЗрдЫ рд░, рддреНрдпрд╕реИрд▓реЗ, рджреЛрд╕реНрд░реЛ рднрдиреНрджрд╛ рдареВрд▓реЛ рд╣реБрдиреЗрдЫ (рдЦрд╛рддрд╛рдХреЛ рд░рд╛рдЙрдиреНрдбрд┐рдЩрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ - рдмреЛрд▓реНрдбрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ)ред рдпрд╕рд▓реЗ рд╣рд╛рдореНрд░рд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдмрд╛рдЯ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрджрдЫред рджреЛрд╕реНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирдореНрдмрд░ 0.1 рджреЛрд╣реЛрд░реЛ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░рдорд╛ рдХрд╛рд╕реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░рдХреЛ рд╕рдВрдЦреНрдпрд╛рд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░рд┐рдиреНрдЫред рджреБрдмреИ рдПрдЙрдЯреИ рдкреНрд░рдХрд╛рд░рдорд╛ рдШрдЯрд╛рдЗрдПрдХрд╛ рдЫрдиреН, рд░ рд╣рд╛рдореАрд╕рдБрдЧ рдареНрдпрд╛рдХреНрдХреИ рд╣рд╛рдореАрд▓реЗ рдорд╛рдерд┐ рджреЗрдЦреЗрдХреЛ рдХреБрд░рд╛ рд╣реЛред рдХреНрд╡реЗрд░реА рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реМрдВ рддрд╛рдХрд┐ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рдЖрдЙрдБрдЫ:

********* ╨Ч╨Р╨Я╨а╨Ю╨б *********
SELECT 0.1::REAL > 0.1::DOUBLE PRECISION;
**************************
?column?
----------
t
(1 ╤Б╤В╤А╨╛╨║╨░)

рд░ рд╡рд╛рд╕реНрддрд╡рдорд╛, рд╕рдВрдЦреНрдпрд╛ 0.1 рдХреЛ рджреЛрд╣реЛрд░реЛ рдХрдореАрд▓рд╛рдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░ рджреЛрд╣реЛрд░реЛ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛рдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реЗрд░, рд╣рд╛рдореА рдкрд╣реЗрд▓реАрдХреЛ рдЬрд╡рд╛рдл рдкрд╛рдЙрдБрдЫреМрдВ:

********* ╨Ч╨Р╨Я╨а╨Ю╨б *********
SELECT 0.1::REAL::DOUBLE PRECISION;
**************************

      float8       
-------------------
0.100000001490116
(1 ╤Б╤В╤А╨╛╨║╨░)

рдпрд╕рд▓реЗ рдорд╛рдерд┐рдХреЛ рддреЗрд╕реНрд░реЛ рдЙрджрд╛рд╣рд░рдгрд▓рд╛рдИ рдкрдирд┐ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдЫред рдирдореНрдмрд░ 123 рд╕рд░рд▓ рдЫ рдпреЛ 24 рдмрд┐рдЯ рдорд╛ mantissa рдлрд┐рдЯ рдЧрд░реНрди рдЕрд╕рдореНрднрд╡ рдЫ (реирей рд╕реНрдкрд╖реНрдЯ + рез рдирд┐рд╣рд┐рдд)ред 23 рдмрд┐рдЯрд╣рд░реВрдорд╛ рдлрд┐рдЯ рд╣реБрди рд╕рдХреНрдиреЗ рдЕрдзрд┐рдХрддрдо рдкреВрд░реНрдгрд╛рдВрдХ 1-24 = 224 рд╣реЛред рддреНрдпрд╕реИрд▓реЗ, рд╣рд╛рдореНрд░реЛ рдирдореНрдмрд░ 1 рд▓рд╛рдИ рдирд┐рдХрдЯрддрдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ 16 рдорд╛ рд░рд╛рдЙрдиреНрдб рдЧрд░рд┐рдПрдХреЛ рдЫред рдкреНрд░рдХрд╛рд░рд▓рд╛рдИ рдбрдмрд▓ PRECISION рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░, рд╣рд╛рдореА рдЕрдм рдпреЛ рдкрд░рд┐рджреГрд╢реНрдп рджреЗрдЦреНрджреИрдиреМрдВ:

********* ╨Ч╨Р╨Я╨а╨Ю╨б *********
SELECT 123456789::DOUBLE PRECISION::INT;
**************************
   int4   
-----------
123456789
(1 ╤Б╤В╤А╨╛╨║╨░)

рдпрддрд┐ рдиреИред рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдЪрдорддреНрдХрд╛рд░ рдЫреИрди рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫред рддрд░ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд╕рдмреИ рдХреБрд░рд╛ рддрдкрд╛рдИрд▓рд╛рдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдХрддрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрдиреЗ рд░рд╛рдореНрд░реЛ рдХрд╛рд░рдг рд╣реЛред рд╕рд╛рдпрдж рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдареВрд▓реЛ рдлрд╛рдЗрджрд╛ рд╕рдЯреАрдХрддрд╛ рдХреЛ рдЬреНрдЮрд╛рдд рд╣рд╛рдирд┐ рд╕рдВрдЧ рдЧрдгрдирд╛ рдХреЛ рдЧрддрд┐ рд╣реЛред рддрд░ рдХреЗ рдпреЛ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рд╣реБрдиреЗрдЫ рдЬрд╕рд▓реЗ рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдмрд╛рд░рдореНрдмрд╛рд░ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдФрдЪрд┐рддреНрдп рджрд┐рдиреНрдЫ? рд╕реЛрдЪреНрдиреБ рд╣реБрдиреНрдиред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди