{"id":88581,"date":"2020-07-15T01:42:09","date_gmt":"2020-07-14T23:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real"},"modified":"2020-07-15T01:42:09","modified_gmt":"2020-07-14T23:42:09","slug":"unreal-features-of-real-types-ili-budte-ostorozhny-s-real","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real","title":{"rendered":"Unreal Features of Real Types, v\u00f5i Olge ettevaatlik REAL-iga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00e4rast avaldamist <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/508038\/\">artikkel<\/a><\/noindex> PostgreSQL t\u00fcpiseerimise omaduste kohta, esimene kommentaar k\u00e4sitles keerukusi ujuvpunktide numbritega t\u00f6\u00f6tamisel. Otsustasin kiiresti \u00fcle vaadata saadaval olevad SQL-p\u00e4ringud, et n\u00e4ha, kui sageli kasutatakse t\u00fc\u00fcpi REAL. Osutus, et seda kasutatakse \u00fcsna sageli, ja arendajad ei m\u00f5ista alati sellega seotud ohte. See on \u00fcllatav, arvestades, et Internetis ja Habras on piisavalt palju h\u00e4id artikleid ujuvpunktide numbrite arvutisimulatsioonide ja nende t\u00f6\u00f6tlemise omaduste kohta. Seet\u00f5ttu p\u00fc\u00fcan selles artiklis rakendada neid omadusi PostgreSQL-is ja selgitada \u00abk\u00e4tega\u00bb sellega seotud ebameeldivusi, et SQL-p\u00e4ringute arendajatel oleks kergem neid v\u00e4ltida.<\/p>\n<p><\/p>\n<p>PostgreSQLi dokumentatsioon sisaldab l\u00fchikest lauset: \u201eSarnaste vigade haldamine ja nende levitamine arvutuste k\u00e4igus on matemaatika ja arvutiteaduse eraldi valdkonna uurimist\u00f6\u00f6 objekt, ja siinkohal ei k\u00e4sitleta seda\u201c (samuti suunates m\u00f5istlikult lugejat IEEE 754 standardi poole). Millised vead siin silmas peetakse? Arutame neid j\u00e4rjestikku ja varsti on selge, miks ma taas kirjutamise juurde tagasi p\u00f6\u00f6rdusin.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>V\u00f5tame n\u00e4iteks lihtsa p\u00e4ringu:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL;\n**************************\nfloat4\n--------\n    0.1\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Tulemus ei n\u00e4ita midagi erilist \u2013 saame oodatud 0.1. Aga n\u00fc\u00fcd v\u00f5rdleme seda 0.1-ga:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL = 0.1;\n**************************\n?column?\n----------\nf\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>\u041d\u0435 \u0440\u0430\u0432\u043d\u044b! \u0427\u0442\u043e \u0437\u0430 \u0447\u0443\u0434\u0435\u0441\u0430! \u041d\u043e \u0434\u0430\u043b\u044c\u0448\u0435-\u0431\u043e\u043b\u044c\u0448\u0435. \u041a\u0442\u043e-\u0442\u043e \u0441\u043a\u0430\u0436\u0435\u0442, \u043c\u043e\u043b, \u044f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e REAL \u043f\u043b\u043e\u0445\u043e \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u0441 \u0434\u0440\u043e\u0431\u044f\u043c\u0438, \u043d\u0443 \u0442\u0430\u043a \u044f \u0431\u0443\u0434\u0443 \u0442\u0443\u0434\u0430 \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0441 \u043d\u0438\u043c\u0438-\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e. \u041e\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0447\u0438\u0441\u043b\u043e 123&nbsp;456&nbsp;789 \u043a \u0442\u0438\u043f\u0443 REAL:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 123456789::REAL::INT;\n**************************\n   int4   \n-----------\n123456792\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Ja see tuli kolmandiku v\u00f5rra suurem! K\u00f5ik, andmebaas on t\u00e4ielikult unustanud, kuidas arvestada! V\u00f5i me ei saa midagi aru? Kutsume seda l\u00f5plikult selgitama.<\/p>\n<p><\/p>\n<p>Korraks meenutame teooriaid. Nagu teada, v\u00f5ib iga k\u00fcmnendlik number jagada k\u00fcmne astmete j\u00e4rgi. N\u00e4iteks number 123.456 on v\u00f5rdne 1*10\u00b2 + 2*10\u00b9 + 3*10\u2070 + 4*10\u207b\u00b9 + 5*10\u207b\u00b2 + 6*10\u207b\u00b3. Kuid arvuti t\u00f6\u00f6tab arvudega binaarses vormis, seega tuleb neid esitada kahek\u00fcmne astmete lahtimonteerimisel. Seega number 5.625 binaarses vormis esindatakse kui 101.101 ja see on v\u00f5rdne 1*2\u00b2 + 0*2\u00b9 + 1*2\u2070 + 1*2\u207b\u00b9 + 0*2\u207b\u00b2 + 1*2\u207b\u00b3. Ja kui positiivsed kahek\u00fcmnendad astmed annavad alati t\u00e4isarvulisi k\u00fcmnendlikke numbreid (1, 2, 4, 8, 16 jne), siis negatiivsest on asi keerulisem (0.5, 0.25, 0.125, 0.0625 jne). Probleem on selles, et <b>k\u00f5iki k\u00fcmnendlikke murde ei saa esitada l\u00f5plike binaarsete murdena.<\/b>. N\u00e4iteks meie kuulus 0.1 binaarses murdes n\u00e4ib perioodilise v\u00e4\u00e4rtusena 0.0(0011). Seega on selle numbri l\u00f5plik v\u00e4\u00e4rtus masina m\u00e4lus s\u00f5ltuv suuruse j\u00e4rgi.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd on \u00f5ige aeg meenutada, kuidas salvestatakse reaalarve arvutite m\u00e4lu. \u00dcldiselt koosneb reaalnumber kolmest p\u00f5hiosast \u2013 m\u00e4rgist, mantissist ja eksponentsist. M\u00e4rk v\u00f5ib olla kas pluss v\u00f5i miinus, seega kulutab see \u00fche biidi. Mantissi ja eksponentsi bitid m\u00e4\u00e4rab reaalne t\u00fc\u00fcp. N\u00e4iteks t\u00fc\u00fcbi REAL puhul on mantissi pikkus 23 bitti (\u00fcks bit, mis on v\u00f5rdne 1, lisatakse mantissi ette automaatselt, seega kokku 24), ja eksponentsi pikkus on 8 bitti. Seega kokku 32 bitti ehk 4 baiti. T\u00fc\u00fcbi DOUBLE PRECISION puhul on mantissi pikkus juba 52 bitti, ja eksponentsi pikkus 11 bitti, mis kokku teeb 64 bitti ehk 8 baiti. PostgreSQL ei toeta suuremat t\u00e4psust ujuva komaga numbrite puhul.<\/p>\n<p><\/p>\n<p>Pakume meie 0.1 numbrit k\u00fcmnendikuna v\u00e4lja m\u00f5lemas t\u00fc\u00fcbis \u2013 REAL ja DOUBLE PRECISION. Kuna meie eksponenti m\u00e4rk ja v\u00e4\u00e4rtus langevad kokku, keskendume mantissile (alati teadlikult j\u00e4tan v\u00e4lja v\u00e4hem ilmseid eksponendi v\u00e4\u00e4rtuste ja nullide salvestamise erip\u00e4ra, kuna need raskendavad m\u00f5istmist ja segavad probleemist arusaamist; kui see huvitab, vaadake IEEE 754 standardit). Mida me saame? \u00dclemises reas annan \"mantissi\" t\u00fc\u00fcbi REAL jaoks (arvestades viimase bitti \u00fcmardamist 1-le l\u00e4hima esindatava numbri, vastasel juhul on see 0.099999...) ja alumises \u2013 t\u00fc\u00fcbi DOUBLE PRECISION jaoks:<\/p>\n<p><\/p>\n<blockquote><p><b>0.0001<\/b>1001100110011001100110<b>1<\/b><br \/>\n<b>0.0001<\/b>1001100110011001100110011001100110011001100110011001\n<\/p><\/blockquote>\n<p><\/p>\n<p>Koheselt on ilmne, et need on kaks t\u00e4iesti erinevat numbrit! Seet\u00f5ttu ei toimu esimese numbri v\u00f5rdlemisel t\u00e4itmist nullidega ja seega on see suurem kui teine (arvestades \u00fcmardamist \u2013 rasvases kirjas \u00fchte). Sellega selgitatakse meie n\u00e4idete mitmeti t\u00f5lgendamist. Teises n\u00e4ites antud number 0.1 muudetakse t\u00fc\u00fcbiks DOUBLE PRECISION, mille j\u00e4rel v\u00f5rreldakse seda t\u00fc\u00fcbi REAL numbriga. M\u00f5lemad muudetakse \u00fchte t\u00fc\u00fcpi ja meil on t\u00e4pselt see, mida n\u00e4eme \u00fclal. Muudame p\u00e4ringut, et k\u00f5ik paika loksuks:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL &gt; 0.1::DOUBLE PRECISION;\n**************************\n?veerg?\n----------\nt\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Ja t\u00f5epoolest, kui me viime kahekordse konversiooni numbrist 0.1 REAL-iks ja DOUBLE PRECISION-iks, saame vastuse m\u00f5istatusse:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL::DOUBLE PRECISION;\n**************************\n\n      float8       \n-------------------\n0.100000001490116\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>\u042d\u0442\u0438\u043c \u0436\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435. \u0427\u0438\u0441\u043b\u043e 123&nbsp;456&nbsp;789 \u043f\u0440\u043e\u0441\u0442\u043e <b>v\u00f5imatu mahutada 24 bitti mantississe<\/b> (23 \u044f\u0432\u043d\u044b\u0445 + 1 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c\u044b\u0439). \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 24 \u0431\u0438\u0442\u0430, \u0431\u0443\u0434\u0435\u0442 224-1 = 16&nbsp;777&nbsp;215. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0448\u0435 \u0447\u0438\u0441\u043b\u043e 123&nbsp;456&nbsp;789 \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c\u043e\u0433\u043e 123&nbsp;456&nbsp;792. \u0421\u043c\u0435\u043d\u0438\u0432 \u0442\u0438\u043f \u043d\u0430 DOUBLE PRECISION, \u043c\u044b \u0443\u0436\u0435 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 123456789::DOUBLE PRECISION::INT;\n**************************\n   int4   \n-----------\n123456789\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Nii et k\u00f5ik. Selgub, et mingeid imesid ei ole. Kuid k\u00f5ik, mis on kirjeldatud, on hea p\u00f5hjus m\u00f5elda, kui v\u00e4ga on teil t\u00f5esti vaja t\u00fc\u00fcpi REAL. T\u00f5en\u00e4oliselt on selle kasutamise peamine eelis \u2013 arvutuste kiirus, kus on eelnevalt teada kaotus t\u00e4psuses. Kuid kas see on universaalne stsenaarium, mis \u00f5igustab selle t\u00fc\u00fcbi nii sagedast kasutamist? Ei usu.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/508350\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u042f \u0440\u0435\u0448\u0438\u043b \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u043d\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f REAL. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0437\u0430 \u043d\u0438\u043c. \u0418 \u044d\u0442\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-88581","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u042f \u0440\u0435\u0448\u0438\u043b \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u043d\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f REAL. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0437\u0430 \u043d\u0438\u043c. \u0418 \u044d\u0442\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Unreal Features of Real Types, \u0438\u043b\u0438 \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0441 REAL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u042f \u0440\u0435\u0448\u0438\u043b \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u043d\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f REAL. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0437\u0430 \u043d\u0438\u043c. \u0418 \u044d\u0442\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-14T23:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-14T23:42:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Reaalarvude Unreal omadused, v\u00f5i Olge ettevaatlik REAL | ProHoster","description":"P\u00e4rast artikli avaldamist PostgreSQL t\u00fcpiseerimise erip\u00e4radest tuli esimene kommentaar, mis k\u00e4sitles reaalarvudega t\u00f6\u00f6tamise keerukusi. Otsustasin kiiresti \u00fcle vaadata oma k\u00e4sutuses olevad SQL-p\u00e4ringud, et n\u00e4ha, kui tihti kasutatakse t\u00fc\u00fcpi REAL. Nagu selgus, kasutatakse seda \u00fcsna sageli, ja mitte alati m\u00f5istavad arendajad sellega seotud ohte. Ja see vaatamata sellele,","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Unreal Features of Real Types, \u0438\u043b\u0438 \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0441 REAL | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u042f \u0440\u0435\u0448\u0438\u043b \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u043d\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f REAL. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0437\u0430 \u043d\u0438\u043c. \u0418 \u044d\u0442\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e,","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-14T23:42:09+00:00","article:modified_time":"2020-07-14T23:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"88581","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:10:53","updated":"2022-10-03 00:47:31"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/88581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=88581"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/88581\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=88581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=88581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=88581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}