>> DAVID Malan: Við skulum nú blása þinn hugur.
Það kemur í ljós í hinum raunverulega heimi 1 skipt með því að 10 er örugglega 1/10, eða 0.1.
En í tölvum sem aðeins hafa endanlegt fjöldi bita sem að
táknað tölur, þú getur ekki alltaf táknar tölur eins og 1/10 með
fullkominn nákvæmni.
Með öðrum orðum, hafa tölvur stundum að dómur símtöl og ekki
endilega tákna fjölda þér vil eins nákvæmlega og þú ætlar.
>> Fyrir dæmi, ráð ég að fara aftur í Þetta forrit og breyta 0,1 til,
ó, 0,28, á þann hátt sem gefur til kynna að Mig langar printf til printf til
28 stöðum nákvæmni.
Skulum nú vistað og safna saman forrit, í þetta sinn með förðun floats2.
Keyra það með punktur slash floats2.
Og, kæri Guð, í þetta sinn ég sé ekki 0.1, en 0.10000000, sem er nokkuð
gott svo langt.
En þá, 14901161193847656250.
>> Jæja, hvað er að gerast?
Jæja, það kemur í ljós að fljóta er venjulega geymd inni í tölvunni
með 32 bita.
32 er augljóslega endanlega fjölda sem felur í sér að þú getur aðeins táknað
með 32 bita endanlegri fjölda af fleytitölum.
Því miður, sem felur í sér að tölvan getur ekki táknað allt mögulegt
fleytitölur eða rauntölur, sem ríkir í heiminum,
því það hefur bara svo marga bita.
>> Og svo hvað tölva er greinilega gert í þessu tilfelli er tákna: 1/10 til
næst mögulegt fljótandi lið gildi sem það er hægt.
En ef við skoðum, eins og við höfum hér, að 28 aukastafi, byrjum við að sjá að
imprecision.
Þannig að þetta er vandamál með engin fullkomin lausn.
Við getum notað tvöfaldan í staðinn af a flot, sem hefur tilhneigingu til að nota 64 bita eins og
öfugt við 32.
En auðvitað, 64 er einnig tímabundið, svo er vandamálið mun
vera jafnvel með tvíliðaleik.