>> DAVID Malan: Le të fryj mendjen tuaj tani.
Ajo rezulton në botën e vërtetë 1 të ndarë nga 10 është e vërtetë 1/10, ose 0.1.
Por në kompjuterat që kanë vetëm një i caktuar Numri i bit me të cilin do të
përfaqësojnë numrat, ju nuk mund gjithmonë përfaqësojnë numra si 1/10 me
saktësi të përsosur.
Me fjalë të tjera, kompjutera ndonjëherë kanë për të bërë thirrje gjykimit dhe nuk
domosdoshmërisht në numrin ju doni si pikërisht si keni ndërmend.
>> Për shembull, mendoj unë të kthehem në ky program dhe për të ndryshuar 0.1 për,
oh, 0.28, duke treguar se Do të doja të printf printf të
28 vendet e saktësi.
Le tani të shpëtuar dhe të hartojnë programin, këtë herë me make floats2.
Drejtuar atë me dot floats2 çaj.
Dhe, i dashur Zot, këtë herë unë nuk shoh 0.1, por 0.10000000, e cila është shumë e
mirë deri më tani.
Por pastaj, 14901161193847656250.
>> E pra, çfarë po ndodh?
E pra, ajo rezulton se një noton është ruhet zakonisht brenda një kompjuter
me 32 bit.
32 është padyshim një numër i caktuar, i cili nënkupton që ju mund të përfaqësojë vetëm
me 32 bit një numër i caktuar e lundrues vlerave pikë.
Për fat të keq, kjo do të thotë se kompjuteri nuk mund të përfaqësojnë të gjitha të jetë e mundur
Numrat pikë lundrues, ose numrave reale, që ekzistojnë në botë,
sepse ajo ka vetëm kaq shumë bit.
>> Dhe kështu që çfarë kompjuteri është me sa duket bërë në këtë rast është e përfaqësojnë 1/10 të
Floating më të afërt të mundshme Vlera pikë që ai mund.
Por nëse ne e shohim, siç e kemi këtu, në 28 vende dhjetore, ne fillojmë të shohim se
pasaktësi.
Pra, ky është një problem me nuk ka zgjidhje e përkryer.
Ne mund të përdorni një të dyfishtë në vend të një noton, i cili ka tendencë për të përdorur 64 bit si
krahasim me 32.
Por sigurisht, 64 është gjithashtu e fundme, kështu që problemi do të
mbeten edhe me dyshe.