>> DAVID MALAN: Katsotaanpa nyt puhaltaa mielt瓣si.
On k瓣ynyt ilmi, todellisessa maailmassa 1 jaettuna 10 on todellakin kymmenesosa, tai 0.1.
Mutta tietokoneissa, joissa on vain 瓣瓣rellinen bittien lukum瓣瓣r瓣, jolla voidaan
edustavat numerot, et voi aina edustavat numerot kuin 1/10 kanssa
t瓣ysin tarkasti.
Toisin sanoen tietokoneet joskus tehd瓣 tuomion t瓣yt瓣nt繹繹npano edellytt瓣瓣 eik瓣
v瓣ltt瓣m瓣tt瓣 edusta numero haluta niin tarkasti kuin aiot.
>> Oletetaan esimerkiksi, ett瓣 menen takaisin T瓣m瓣n ohjelman ja muuttaa 0,1,
oh, 0,28, mik瓣 osoittaa, ett瓣 Haluaisin printf ett瓣 printf kohteeseen
28 paikkoja tarkkuus.
Katsotaanpa nyt tallentaa ja k瓣瓣nt瓣瓣 ohjelman, t瓣ll瓣 kertaa tehd瓣 floats2.
Ajaa se piste slash floats2.
Ja rakas Jumala, t瓣ll瓣 kertaa en n瓣e 0,1, mutta 0.10000000, mik瓣 on melko
hyv瓣 t瓣h瓣n menness瓣.
Mutta sitten, 14901161193847656250.
>> No, mit瓣 on tekeill瓣?
No, k瓣y ilmi, ett瓣 float on tyypillisesti tallennettu tietokoneen
32 bitin.
32 on ilmeisesti 瓣瓣rellinen m瓣瓣r瓣, joka tarkoittaa, ett瓣 voit vain edustaa
32 bitin rajallinen m瓣瓣r瓣 liukulukuoperaatioiden arvoja.
Valitettavasti t瓣m瓣 tarkoittaa, ett瓣 tietokone ei voi edustaa kaikkia mahdollisia
liukuluvut tai reaalilukuja, ett瓣 olemassa maailmassa,
koska se on vain niin monta bitti瓣.
>> Ja niin mit瓣 tietokoneen ilmeisesti tehty t瓣ss瓣 tapauksessa on edustaa 1/10 ja
l瓣hin mahdollinen kellunta pisteen arvo, ett瓣 se voi.
Mutta jos katsomme, koska meill瓣 on t瓣瓣ll瓣, 28 desimaalin tarkkuudella, alamme n瓣hd瓣, ett瓣
ep瓣t瓣sm瓣llisyys.
Joten t瓣m瓣 on ongelma Ei t瓣ydellinen ratkaisu.
Voimme k瓣ytt瓣瓣 kaksinkertaista sijaan float, jolla on taipumus k瓣ytt瓣瓣 64 bitti瓣, kuten
vastustaa 32.
Mutta tietenkin, 64 on my繹s rajallinen, joten ongelma
s瓣ilyv瓣t jopa kaksinkertaistuu.