DAVID Malan: Leiskite dabar smūgis jūsų protas. Pasirodo, realiame pasaulyje 1 padalytas iki 10 iš tiesų yra 1/10 arba 0,1. Bet kompiuterių, tik ribotas bitų skaičius, su kuriuo atstovauti numerius, jūs ne visada gali atstovauti numerius kaip 1/10 su puikus tikslumo. Kitaip tariant, kompiuteriai kartais kad sprendimo skambučius ir ne nebūtinai atitinka skaičius, kurį nori taip tiksliai, kaip jūs ketinate. Pavyzdžiui, tarkime, kad aš grįžti į ši programa ir pakeisti 0,1 į, oh, 0,28, kartu nurodant, kad Norėčiau printf į printf į 28 vietos tikslumo. Leiskite dabar išsaugoti ir sudaryti programą, šį kartą su make floats2. Paleiskite jį dot slash floats2. Ir, brangus Dieve, šį kartą matau ne 0,1, bet 0.10000000, kuri yra gana gerai iki šiol. Bet tada, 14901161193847656250. Na, kas čia vyksta? Na, paaiškėja, kad plūdė yra paprastai saugoma viduje kompiuterio su 32 bitais. 32 Akivaizdu, kad ribinis skaičius, kuris reiškia, kad jūs galite tik atstovauti su 32 bitų baigtinio skaičiaus slankiojo kablelio reikšmės. Deja, tai reiškia, kad kompiuteris negali atstovauti įmanoma slankiojo kablelio skaičiai, arba realieji skaičiai, kad egzistuoja pasaulyje, nes jis turi tik tiek daug bitai. Ir taip, ką kompiuteris matyt padaryta šiuo atveju sudaro 1/10 iki arčiausiai galima plaukioti punkto vertė, kad jis gali. Bet jei pažvelgtume, kaip mes turime čia, 28 dešimtųjų tikslumu, mes pradedame matyti, kad netikslumai. Taigi tai yra su problema ne puikus sprendimas. Mes galime naudoti dvigubai vietoj plūdės, kuri linkusi naudoti 64 bitų, kaip o ne 32. Bet, žinoma, 64 taip pat yra ribotas, taip problema bus lieka net padvigubėja.