>> DAVID Malan: Pojdimo zdaj blow your mind.
Izkazalo se je, v resničnem svetu 1 deljena s 10 je dejansko 1/10, ali 0.1.
Toda v računalnikih, ki imajo le omejen število bitov, s katerimi se
predstavljajo številke, ne morete vedno predstavljajo številke, kot je 1/10 s
popolna natančnost.
Z drugimi besedami, računalniki včasih da bi judgment klice in ne
predstavljajo nujno številko, ki jo tako natančno kot jo nameravate želite.
>> Recimo, da sem šel nazaj v ta program in spremenite 0,1 do,
oh, 0,28, kar kaže, da Rad bi, da printf printf na
28 krajev natančnosti.
Pojdimo zdaj shranite in sestaviti program, tokrat z make floats2.
Teči z dot poševnica floats2.
In, dragi Bog, ta čas ne vidim 0.1, ampak 0.10000000, kar je precej
dober do sedaj.
Ampak potem, 14901161193847656250.
>> No, kaj se dogaja?
No, izkazalo se je, da je plovec običajno shranjeni znotraj računalnika
s 32-bitno.
32 je očitno končno število, ki pomeni, da si lahko predstavlja le
s 32-bitno končno število za plavajočo vejico.
Na žalost, to pomeni, da Računalnik ne more predstavljati vse mogoče
številk s plavajočo vejico ali realna števila, ki obstajajo v svetu,
ker ima samo toliko bitov.
>> Pa kaj, računalnik je očitno to v tem primeru predstavlja 1/10 do
čim tesnejše plavajoči Vrednost točke, ki jih lahko.
Ampak, če pogledamo, kot jo imamo tukaj, na 28. decimalna mesta, smo začeli videti, da
nenatančnost.
Torej je to problem, s ni idealna rešitev.
Mi lahko uporabite dvojnega namesto likvidna sredstva, ki se nagiba za uporabo 64 bitov, kot je
nasprotju z 32.
Seveda, 64 je tudi omejen, tako bo problem
ostajajo tudi z dvojicah.