1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID Malan: Let 's tagad trieciens jūsu prātā. 3 00:00:01,750 --> 00:00:06,500 Izrādās reālajā pasaulē 1 dalīts līdz 10 patiešām 1/10, vai 0.1. 4 00:00:06,500 --> 00:00:10,370 Bet datoriem, kas ir tikai ierobežots bitu skaitu, ar kuru 5 00:00:10,370 --> 00:00:14,290 pārstāvēt ciparus, jūs ne vienmēr var pārstāvēt numurus, piemēram, 1/10, ar 6 00:00:14,290 --> 00:00:15,500 perfekta precizitāte. 7 00:00:15,500 --> 00:00:18,640 Citiem vārdiem sakot, datori dažkārt veikt jurisprudences un nav 8 00:00:18,640 --> 00:00:22,740 vienmēr atspoguļo to, cik jūs vēlaties, kā precīzi, kā jūs plānojat. 9 00:00:22,740 --> 00:00:27,020 >> Piemēram, pieņemsim, ka es dodos atpakaļ šī programma un mainīt 0.1 līdz, 10 00:00:27,020 --> 00:00:32,073 oh, 0.28, tādējādi norādot, ka Es gribētu printf printf 11 00:00:32,073 --> 00:00:34,350 28 vietas precizitāti. 12 00:00:34,350 --> 00:00:39,330 Pieņemsim tagad glābt un sastādīt programmu, šoreiz ar make floats2. 13 00:00:39,330 --> 00:00:41,910 Palaist to ar dot slash floats2. 14 00:00:41,910 --> 00:00:49,980 Un dārgais Dievs, šoreiz es redzu ne 0.1, bet 0.10000000, kas ir diezgan 15 00:00:49,980 --> 00:00:51,070 labi līdz šim. 16 00:00:51,070 --> 00:00:57,830 Bet tad, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Nu, kas notiek? 18 00:00:58,880 --> 00:01:02,280 Nu, izrādās, ka pludiņš ir parasti glabājas iekšpusē datoru 19 00:01:02,280 --> 00:01:03,500 ar 32 bitiem. 20 00:01:03,500 --> 00:01:07,340 32 ir acīmredzami ierobežots skaits, kas nozīmē, ka jūs varat tikai pārstāvēt 21 00:01:07,340 --> 00:01:11,050 ar 32 bitu noteiktu skaitu no peldošā punkta vērtības. 22 00:01:11,050 --> 00:01:14,980 Diemžēl, tas nozīmē, ka dators nevar pārstāvēt visas iespējamās 23 00:01:14,980 --> 00:01:18,110 peldošā komata skaitļus, vai reāli skaitļi, kas pastāv pasaulē, 24 00:01:18,110 --> 00:01:19,980 tāpēc, ka tas ir tikai tik daudz bitiem. 25 00:01:19,980 --> 00:01:23,940 >> Un tā, ko dators ir acīmredzami izdarīts šajā gadījumā ir sastāda 1/10 to 26 00:01:23,940 --> 00:01:26,880 iespējami tuvākā peldošā punkta vērtība, ka tā var. 27 00:01:26,880 --> 00:01:31,050 Bet, ja mēs skatāmies, kā mēs esam šeit, lai 28 zīmēm aiz komata, mēs sākam redzēt, ka 28 00:01:31,050 --> 00:01:31,970 neprecizitāte. 29 00:01:31,970 --> 00:01:34,480 Tātad šī ir problēma ar nav ideāls risinājums. 30 00:01:34,480 --> 00:01:38,060 Mēs varam izmantot dubultu vietā pludiņa, kas mēdz izmantot 64 bitu kā 31 00:01:38,060 --> 00:01:39,410 nevis 32. 32 00:01:39,410 --> 00:01:42,290 Bet, protams, 64 arī ir ierobežots, tāpēc problēma 33 00:01:42,290 --> 00:01:43,630 paliek pat ar dubultspēlēs. 34 00:01:43,630 --> 00:01:46,323