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.