1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> David Malan: Kom nou jou gedagtes waai. 3 00:00:01,750 --> 00:00:06,500 Dit blyk in die werklike wêreld 1 gedeel 10 is inderdaad 1/10, of 0,1. 4 00:00:06,500 --> 00:00:10,370 Maar in rekenaars wat net 'n beperkte aantal stukkies waarmee 5 00:00:10,370 --> 00:00:14,290 getalle voor te stel, kan jy nie altyd getalle soos 1/10 verteenwoordig met 6 00:00:14,290 --> 00:00:15,500 perfekte akkuraatheid. 7 00:00:15,500 --> 00:00:18,640 Met ander woorde, rekenaars soms oordeel oproepe en nie te maak 8 00:00:18,640 --> 00:00:22,740 die aantal noodwendig verteenwoordig u wil so presies as jy van plan is. 9 00:00:22,740 --> 00:00:27,020 >> Byvoorbeeld, veronderstel ek gaan terug na hierdie program en verander die 0,1 tot, 10 00:00:27,020 --> 00:00:32,073 O, 0,28, en daardeur aandui dat Ek wil graag printf te printf te 11 00:00:32,073 --> 00:00:34,350 28 plekke van presisie. 12 00:00:34,350 --> 00:00:39,330 Kom ons nou ook red en stel die program, hierdie keer met make floats2. 13 00:00:39,330 --> 00:00:41,910 Doen dit met dot streep floats2. 14 00:00:41,910 --> 00:00:49,980 En, liewe God, hierdie keer kan ek nie sien 0.1, maar 0.10000000, wat is redelik 15 00:00:49,980 --> 00:00:51,070 tot dusver goed. 16 00:00:51,070 --> 00:00:57,830 Maar dan, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Wel, wat gaan aan? 18 00:00:58,880 --> 00:01:02,280 Wel, dit blyk dat 'n float is tipies gestoor binnekant van 'n rekenaar 19 00:01:02,280 --> 00:01:03,500 met 32 ​​stukkies. 20 00:01:03,500 --> 00:01:07,340 32 is natuurlik 'n beperkte aantal, wat impliseer dat jy net kan stel 21 00:01:07,340 --> 00:01:11,050 met 32 ​​stukkies 'n beperkte aantal swaai punt waardes. 22 00:01:11,050 --> 00:01:14,980 Ongelukkig, wat beteken dat die rekenaar kan nie alle moontlike verteenwoordig 23 00:01:14,980 --> 00:01:18,110 swaai punt getalle, of reële getalle, wat bestaan ​​in die wêreld, 24 00:01:18,110 --> 00:01:19,980 want dit het net so baie stukkies. 25 00:01:19,980 --> 00:01:23,940 >> En ja, wat die rekenaar se skynbaar gedoen in hierdie geval is verteenwoordig 1/10 tot 26 00:01:23,940 --> 00:01:26,880 die naaste moontlike wisseltrofee punt waarde wat dit kan. 27 00:01:26,880 --> 00:01:31,050 Maar as ons kyk, as ons hier het tot 28 desimale plekke, het ons begin om te sien dat 28 00:01:31,050 --> 00:01:31,970 onakkuraatheid. 29 00:01:31,970 --> 00:01:34,480 So dit is 'n probleem met geen perfekte oplossing. 30 00:01:34,480 --> 00:01:38,060 Ons kan 'n dubbele plaas van 'n float gebruik, wat geneig is om 64 stukkies te gebruik as 31 00:01:38,060 --> 00:01:39,410 teenoor 32. 32 00:01:39,410 --> 00:01:42,290 Maar natuurlik, 64 is ook eindig, so sal die probleem 33 00:01:42,290 --> 00:01:43,630 bly, selfs met dubbelspel. 34 00:01:43,630 --> 00:01:46,323