1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID MALAN: Katsotaanpa nyt puhaltaa mielt瓣si. 3 00:00:01,750 --> 00:00:06,500 On k瓣ynyt ilmi, todellisessa maailmassa 1 jaettuna 10 on todellakin kymmenesosa, tai 0.1. 4 00:00:06,500 --> 00:00:10,370 Mutta tietokoneissa, joissa on vain 瓣瓣rellinen bittien lukum瓣瓣r瓣, jolla voidaan 5 00:00:10,370 --> 00:00:14,290 edustavat numerot, et voi aina edustavat numerot kuin 1/10 kanssa 6 00:00:14,290 --> 00:00:15,500 t瓣ysin tarkasti. 7 00:00:15,500 --> 00:00:18,640 Toisin sanoen tietokoneet joskus tehd瓣 tuomion t瓣yt瓣nt繹繹npano edellytt瓣瓣 eik瓣 8 00:00:18,640 --> 00:00:22,740 v瓣ltt瓣m瓣tt瓣 edusta numero haluta niin tarkasti kuin aiot. 9 00:00:22,740 --> 00:00:27,020 >> Oletetaan esimerkiksi, ett瓣 menen takaisin T瓣m瓣n ohjelman ja muuttaa 0,1, 10 00:00:27,020 --> 00:00:32,073 oh, 0,28, mik瓣 osoittaa, ett瓣 Haluaisin printf ett瓣 printf kohteeseen 11 00:00:32,073 --> 00:00:34,350 28 paikkoja tarkkuus. 12 00:00:34,350 --> 00:00:39,330 Katsotaanpa nyt tallentaa ja k瓣瓣nt瓣瓣 ohjelman, t瓣ll瓣 kertaa tehd瓣 floats2. 13 00:00:39,330 --> 00:00:41,910 Ajaa se piste slash floats2. 14 00:00:41,910 --> 00:00:49,980 Ja rakas Jumala, t瓣ll瓣 kertaa en n瓣e 0,1, mutta 0.10000000, mik瓣 on melko 15 00:00:49,980 --> 00:00:51,070 hyv瓣 t瓣h瓣n menness瓣. 16 00:00:51,070 --> 00:00:57,830 Mutta sitten, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> No, mit瓣 on tekeill瓣? 18 00:00:58,880 --> 00:01:02,280 No, k瓣y ilmi, ett瓣 float on tyypillisesti tallennettu tietokoneen 19 00:01:02,280 --> 00:01:03,500 32 bitin. 20 00:01:03,500 --> 00:01:07,340 32 on ilmeisesti 瓣瓣rellinen m瓣瓣r瓣, joka tarkoittaa, ett瓣 voit vain edustaa 21 00:01:07,340 --> 00:01:11,050 32 bitin rajallinen m瓣瓣r瓣 liukulukuoperaatioiden arvoja. 22 00:01:11,050 --> 00:01:14,980 Valitettavasti t瓣m瓣 tarkoittaa, ett瓣 tietokone ei voi edustaa kaikkia mahdollisia 23 00:01:14,980 --> 00:01:18,110 liukuluvut tai reaalilukuja, ett瓣 olemassa maailmassa, 24 00:01:18,110 --> 00:01:19,980 koska se on vain niin monta bitti瓣. 25 00:01:19,980 --> 00:01:23,940 >> Ja niin mit瓣 tietokoneen ilmeisesti tehty t瓣ss瓣 tapauksessa on edustaa 1/10 ja 26 00:01:23,940 --> 00:01:26,880 l瓣hin mahdollinen kellunta pisteen arvo, ett瓣 se voi. 27 00:01:26,880 --> 00:01:31,050 Mutta jos katsomme, koska meill瓣 on t瓣瓣ll瓣, 28 desimaalin tarkkuudella, alamme n瓣hd瓣, ett瓣 28 00:01:31,050 --> 00:01:31,970 ep瓣t瓣sm瓣llisyys. 29 00:01:31,970 --> 00:01:34,480 Joten t瓣m瓣 on ongelma Ei t瓣ydellinen ratkaisu. 30 00:01:34,480 --> 00:01:38,060 Voimme k瓣ytt瓣瓣 kaksinkertaista sijaan float, jolla on taipumus k瓣ytt瓣瓣 64 bitti瓣, kuten 31 00:01:38,060 --> 00:01:39,410 vastustaa 32. 32 00:01:39,410 --> 00:01:42,290 Mutta tietenkin, 64 on my繹s rajallinen, joten ongelma 33 00:01:42,290 --> 00:01:43,630 s瓣ilyv瓣t jopa kaksinkertaistuu. 34 00:01:43,630 --> 00:01:46,323