>> DAVID MALAN: Nézzük most eldobod az agyad.
Kiderült, hogy a való világban 1 osztott valóban 10 1/10, vagy 0,1.
De a számítógépek csak véges bitek száma, amellyel
számokat, akkor nem mindig a számoknak, mint 1/10
tökéletes pontossággal.
Más szóval, a számítógépek néha hogy ítéletet hívásokat, és nem
feltétlenül tükrözik a szám szeretnénk legpontosabban kíván.
>> Például, tegyük fel, megyek vissza a ezt a programot, és változtassa meg a 0,1,
ó, 0,28, jelezve ezzel, hogy Szeretném printf a printf a
28. helyen pontossággal.
Nézzük most menteni, és összeállítja a programot, ezúttal make floats2.
Fuss a dot slash floats2.
És, édes Istenem, most látom nem 0,1, de 0.10000000, ami elég
jó eddig.
De aztán, 14901161193847656250.
>> Nos, mi folyik itt?
Nos, kiderült, hogy egy úszó jellemzően tárolt belsejében egy számítógépes
32 bit.
32. nyilvánvalóan egy véges számú, amely azt jelenti, hogy csak akkor képviseli
32 bit véges számú A lebegőpontos értékek.
Sajnos, ez azt jelenti, hogy a számítógép nem tud megjelenni az összes lehetséges
lebegőpontos számok, vagy a valós számok, , hogy létezik a világon,
mert csak annyi bit.
>> És akkor mi a számítógép látszólag történik ebben az esetben jelentik 1/10 és
a lehető legszorosabb úszó pont értéket tud.
De ha megnézzük, mint mi itt, 28 tizedes, kezdjük látni, hogy
pontatlanság.
Tehát ez a probléma nincs tökéletes megoldás.
Tudjuk használni a dupla helyett úszó, amely hajlamos arra, hogy használja a 64 biten
szemben 32.
De persze, a 64 is véges, így a probléma lesz
marad még megduplázódik.