1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID Malan: Pojdimo zdaj blow your mind. 3 00:00:01,750 --> 00:00:06,500 Izkazalo se je, v resničnem svetu 1 deljena s 10 je dejansko 1/10, ali 0.1. 4 00:00:06,500 --> 00:00:10,370 Toda v računalnikih, ki imajo le omejen število bitov, s katerimi se 5 00:00:10,370 --> 00:00:14,290 predstavljajo številke, ne morete vedno predstavljajo številke, kot je 1/10 s 6 00:00:14,290 --> 00:00:15,500 popolna natančnost. 7 00:00:15,500 --> 00:00:18,640 Z drugimi besedami, računalniki včasih da bi judgment klice in ne 8 00:00:18,640 --> 00:00:22,740 predstavljajo nujno številko, ki jo tako natančno kot jo nameravate želite. 9 00:00:22,740 --> 00:00:27,020 >> Recimo, da sem šel nazaj v ta program in spremenite 0,1 do, 10 00:00:27,020 --> 00:00:32,073 oh, 0,28, kar kaže, da Rad bi, da printf printf na 11 00:00:32,073 --> 00:00:34,350 28 krajev natančnosti. 12 00:00:34,350 --> 00:00:39,330 Pojdimo zdaj shranite in sestaviti program, tokrat z make floats2. 13 00:00:39,330 --> 00:00:41,910 Teči z dot poševnica floats2. 14 00:00:41,910 --> 00:00:49,980 In, dragi Bog, ta čas ne vidim 0.1, ampak 0.10000000, kar je precej 15 00:00:49,980 --> 00:00:51,070 dober do sedaj. 16 00:00:51,070 --> 00:00:57,830 Ampak potem, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> No, kaj se dogaja? 18 00:00:58,880 --> 00:01:02,280 No, izkazalo se je, da je plovec običajno shranjeni znotraj računalnika 19 00:01:02,280 --> 00:01:03,500 s 32-bitno. 20 00:01:03,500 --> 00:01:07,340 32 je očitno končno število, ki pomeni, da si lahko predstavlja le 21 00:01:07,340 --> 00:01:11,050 s 32-bitno končno število za plavajočo vejico. 22 00:01:11,050 --> 00:01:14,980 Na žalost, to pomeni, da Računalnik ne more predstavljati vse mogoče 23 00:01:14,980 --> 00:01:18,110 številk s plavajočo vejico ali realna števila, ki obstajajo v svetu, 24 00:01:18,110 --> 00:01:19,980 ker ima samo toliko bitov. 25 00:01:19,980 --> 00:01:23,940 >> Pa kaj, računalnik je očitno to v tem primeru predstavlja 1/10 do 26 00:01:23,940 --> 00:01:26,880 čim tesnejše plavajoči Vrednost točke, ki jih lahko. 27 00:01:26,880 --> 00:01:31,050 Ampak, če pogledamo, kot jo imamo tukaj, na 28. decimalna mesta, smo začeli videti, da 28 00:01:31,050 --> 00:01:31,970 nenatančnost. 29 00:01:31,970 --> 00:01:34,480 Torej je to problem, s ni idealna rešitev. 30 00:01:34,480 --> 00:01:38,060 Mi lahko uporabite dvojnega namesto likvidna sredstva, ki se nagiba za uporabo 64 bitov, kot je 31 00:01:38,060 --> 00:01:39,410 nasprotju z 32. 32 00:01:39,410 --> 00:01:42,290 Seveda, 64 je tudi omejen, tako bo problem 33 00:01:42,290 --> 00:01:43,630 ostajajo tudi z dvojicah. 34 00:01:43,630 --> 00:01:46,323