>> DAVID Malan: Olgem nüüd löök meelt.
Selgub, reaalses maailmas 1 jagatud 10 on tõepoolest 1/10, või 0.1.
Aga arvutid, mis on vaid piiratud bittide arvu, millega
arvude, sa ei saa alati esindavad numbrid nagu 1/10 koos
täiuslik täpsust.
Teisisõnu, arvutid mõnikord teha otsus kõnede ja mitte
tingimata esindama arvu te tahad nii täpselt kui te kavatsete.
>> Näiteks oletame, et ma lähen tagasi selle programmi ja muuta 0,1,
oh, 0,28, mis näitab, et Sooviksin printf et printf et
28 paiku täpsusega.
Olgem nüüd salvestada ja programm kompileerida, seekord make floats2.
Käivita see dot kaldkriipsuga floats2.
Ja kallis Jumal, seekord ma ei näe 0,1, kuid 0.10000000, mis on päris
hea siiani.
Aga siis 14901161193847656250.
>> Noh, mis toimub?
Noh, tuli välja, et float on tavaliselt talletatakse sees arvuti
32 bitti.
32 on ilmselt hulga, mis tähendab, et te ei esinda ainult
32 bitti hulga ujukoma väärtuste.
Kahjuks tähendab see, et arvuti ei esinda kõiki võimalikke
ujukoma numbrid või reaalarvud, mis on olemas kogu maailmas,
sest see on ainult nii palju bitti.
>> Ja nii see, mida arvuti on ilmselt teha sel juhul esindavad 1/10 kuni
lähim võimalik ujuva punkt väärtus, see on võimalik.
Aga kui me vaatame, kui meil siin, et 28 pärast koma, hakkame nägema, et
ebatäpsust.
Nii et see on probleem pole ideaalne lahendus.
Saame kasutada topelt asemel float, mis kipub kasutada 64 bitti nagu
mitte 32.
Aga muidugi, 64 on samuti piiratud, nii probleem
jääb isegi kahekordistub.