1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID Malan: Olgem nüüd löök meelt. 3 00:00:01,750 --> 00:00:06,500 Selgub, reaalses maailmas 1 jagatud 10 on tõepoolest 1/10, või 0.1. 4 00:00:06,500 --> 00:00:10,370 Aga arvutid, mis on vaid piiratud bittide arvu, millega 5 00:00:10,370 --> 00:00:14,290 arvude, sa ei saa alati esindavad numbrid nagu 1/10 koos 6 00:00:14,290 --> 00:00:15,500 täiuslik täpsust. 7 00:00:15,500 --> 00:00:18,640 Teisisõnu, arvutid mõnikord teha otsus kõnede ja mitte 8 00:00:18,640 --> 00:00:22,740 tingimata esindama arvu te tahad nii täpselt kui te kavatsete. 9 00:00:22,740 --> 00:00:27,020 >> Näiteks oletame, et ma lähen tagasi selle programmi ja muuta 0,1, 10 00:00:27,020 --> 00:00:32,073 oh, 0,28, mis näitab, et Sooviksin printf et printf et 11 00:00:32,073 --> 00:00:34,350 28 paiku täpsusega. 12 00:00:34,350 --> 00:00:39,330 Olgem nüüd salvestada ja programm kompileerida, seekord make floats2. 13 00:00:39,330 --> 00:00:41,910 Käivita see dot kaldkriipsuga floats2. 14 00:00:41,910 --> 00:00:49,980 Ja kallis Jumal, seekord ma ei näe 0,1, kuid 0.10000000, mis on päris 15 00:00:49,980 --> 00:00:51,070 hea siiani. 16 00:00:51,070 --> 00:00:57,830 Aga siis 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Noh, mis toimub? 18 00:00:58,880 --> 00:01:02,280 Noh, tuli välja, et float on tavaliselt talletatakse sees arvuti 19 00:01:02,280 --> 00:01:03,500 32 bitti. 20 00:01:03,500 --> 00:01:07,340 32 on ilmselt hulga, mis tähendab, et te ei esinda ainult 21 00:01:07,340 --> 00:01:11,050 32 bitti hulga ujukoma väärtuste. 22 00:01:11,050 --> 00:01:14,980 Kahjuks tähendab see, et arvuti ei esinda kõiki võimalikke 23 00:01:14,980 --> 00:01:18,110 ujukoma numbrid või reaalarvud, mis on olemas kogu maailmas, 24 00:01:18,110 --> 00:01:19,980 sest see on ainult nii palju bitti. 25 00:01:19,980 --> 00:01:23,940 >> Ja nii see, mida arvuti on ilmselt teha sel juhul esindavad 1/10 kuni 26 00:01:23,940 --> 00:01:26,880 lähim võimalik ujuva punkt väärtus, see on võimalik. 27 00:01:26,880 --> 00:01:31,050 Aga kui me vaatame, kui meil siin, et 28 pärast koma, hakkame nägema, et 28 00:01:31,050 --> 00:01:31,970 ebatäpsust. 29 00:01:31,970 --> 00:01:34,480 Nii et see on probleem pole ideaalne lahendus. 30 00:01:34,480 --> 00:01:38,060 Saame kasutada topelt asemel float, mis kipub kasutada 64 bitti nagu 31 00:01:38,060 --> 00:01:39,410 mitte 32. 32 00:01:39,410 --> 00:01:42,290 Aga muidugi, 64 on samuti piiratud, nii probleem 33 00:01:42,290 --> 00:01:43,630 jääb isegi kahekordistub. 34 00:01:43,630 --> 00:01:46,323