1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID Malan: Hebu sasa pigo akili yako. 3 00:00:01,750 --> 00:00:06,500 Ni zamu nje katika ulimwengu halisi 1 kugawanywa na 10 ni kweli 1/10, au 0.1. 4 00:00:06,500 --> 00:00:10,370 Lakini katika kompyuta tu na finite idadi ya bits ambayo kwa 5 00:00:10,370 --> 00:00:14,290 kuwakilisha idadi, unaweza daima kuwakilisha idadi kama 1/10 na 6 00:00:14,290 --> 00:00:15,500 usahihi kamilifu. 7 00:00:15,500 --> 00:00:18,640 Kwa maneno mengine, kompyuta wakati mwingine kuwa kupiga simu hukumu na si 8 00:00:18,640 --> 00:00:22,740 lazima kuwakilisha idadi wewe wanataka kama just kama unakusudia. 9 00:00:22,740 --> 00:00:27,020 >> Kwa mfano, tuseme mimi kurudi nyuma katika mpango huu na mabadiliko ya 0.1 kwa, 10 00:00:27,020 --> 00:00:32,073 oh, 0.28, na hivyo kuonyesha kwamba Ningependa printf kwa printf kwa 11 00:00:32,073 --> 00:00:34,350 28 maeneo ya usahihi. 12 00:00:34,350 --> 00:00:39,330 Hebu sasa ila na mpango wa kukusanya, wakati huu na kufanya floats2. 13 00:00:39,330 --> 00:00:41,910 Kuendesha na dot slash floats2. 14 00:00:41,910 --> 00:00:49,980 Na, mpendwa wa Mungu, wakati huu naona si 0.1, lakini 0.10000000, ambayo ni pretty 15 00:00:49,980 --> 00:00:51,070 nzuri hadi sasa. 16 00:00:51,070 --> 00:00:57,830 Lakini basi, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Naam, ni nini kinaendelea? 18 00:00:58,880 --> 00:01:02,280 Naam, zinageuka kuwa kuelea ni kawaida kuhifadhiwa ndani ya kompyuta 19 00:01:02,280 --> 00:01:03,500 na 32 bits. 20 00:01:03,500 --> 00:01:07,340 32 ni wazi finite idadi, ambayo ina maana kwamba unaweza tu kuwakilisha 21 00:01:07,340 --> 00:01:11,050 na 32 bits idadi mahususi ya yaliyo maadili ya uhakika. 22 00:01:11,050 --> 00:01:14,980 Kwa bahati mbaya, hiyo ina maana kwamba kompyuta hawezi kuwakilisha wote iwezekanavyo 23 00:01:14,980 --> 00:01:18,110 idadi yaliyo uhakika, au idadi halisi, ambazo zipo katika dunia, 24 00:01:18,110 --> 00:01:19,980 kwa sababu tu ina bits wengi. 25 00:01:19,980 --> 00:01:23,940 >> Na hivyo kile kompyuta ni inaonekana kufanyika katika kesi hii ni kuwakilisha 1/10 hadi 26 00:01:23,940 --> 00:01:26,880 floating karibu iwezekanavyo thamani uhakika kwamba wanaweza. 27 00:01:26,880 --> 00:01:31,050 Lakini kama sisi kuangalia, kama sisi hapa, 28 maeneo decimal, sisi kuanza kuona kwamba 28 00:01:31,050 --> 00:01:31,970 kutokuwa sahihi. 29 00:01:31,970 --> 00:01:34,480 Hivyo hili ni tatizo kwa hakuna suluhisho kamili. 30 00:01:34,480 --> 00:01:38,060 Tunaweza kutumia mara mbili badala ya kuelea, ambao huelekea kutumia bits 64 kama 31 00:01:38,060 --> 00:01:39,410 kinyume na 32. 32 00:01:39,410 --> 00:01:42,290 Lakini bila shaka, 64 pia ni finite, hivyo tatizo mapenzi 33 00:01:42,290 --> 00:01:43,630 kubaki hata kwa mara mbili. 34 00:01:43,630 --> 00:01:46,323