>> DAVID Malan: Hebu sasa pigo akili yako.
Ni zamu nje katika ulimwengu halisi 1 kugawanywa na 10 ni kweli 1/10, au 0.1.
Lakini katika kompyuta tu na finite idadi ya bits ambayo kwa
kuwakilisha idadi, unaweza daima kuwakilisha idadi kama 1/10 na
usahihi kamilifu.
Kwa maneno mengine, kompyuta wakati mwingine kuwa kupiga simu hukumu na si
lazima kuwakilisha idadi wewe wanataka kama just kama unakusudia.
>> Kwa mfano, tuseme mimi kurudi nyuma katika mpango huu na mabadiliko ya 0.1 kwa,
oh, 0.28, na hivyo kuonyesha kwamba Ningependa printf kwa printf kwa
28 maeneo ya usahihi.
Hebu sasa ila na mpango wa kukusanya, wakati huu na kufanya floats2.
Kuendesha na dot slash floats2.
Na, mpendwa wa Mungu, wakati huu naona si 0.1, lakini 0.10000000, ambayo ni pretty
nzuri hadi sasa.
Lakini basi, 14901161193847656250.
>> Naam, ni nini kinaendelea?
Naam, zinageuka kuwa kuelea ni kawaida kuhifadhiwa ndani ya kompyuta
na 32 bits.
32 ni wazi finite idadi, ambayo ina maana kwamba unaweza tu kuwakilisha
na 32 bits idadi mahususi ya yaliyo maadili ya uhakika.
Kwa bahati mbaya, hiyo ina maana kwamba kompyuta hawezi kuwakilisha wote iwezekanavyo
idadi yaliyo uhakika, au idadi halisi, ambazo zipo katika dunia,
kwa sababu tu ina bits wengi.
>> Na hivyo kile kompyuta ni inaonekana kufanyika katika kesi hii ni kuwakilisha 1/10 hadi
floating karibu iwezekanavyo thamani uhakika kwamba wanaweza.
Lakini kama sisi kuangalia, kama sisi hapa, 28 maeneo decimal, sisi kuanza kuona kwamba
kutokuwa sahihi.
Hivyo hili ni tatizo kwa hakuna suluhisho kamili.
Tunaweza kutumia mara mbili badala ya kuelea, ambao huelekea kutumia bits 64 kama
kinyume na 32.
Lakini bila shaka, 64 pia ni finite, hivyo tatizo mapenzi
kubaki hata kwa mara mbili.