>> David Malan: Kom nou jou gedagtes waai.
Dit blyk in die werklike wêreld 1 gedeel 10 is inderdaad 1/10, of 0,1.
Maar in rekenaars wat net 'n beperkte aantal stukkies waarmee
getalle voor te stel, kan jy nie altyd getalle soos 1/10 verteenwoordig met
perfekte akkuraatheid.
Met ander woorde, rekenaars soms oordeel oproepe en nie te maak
die aantal noodwendig verteenwoordig u wil so presies as jy van plan is.
>> Byvoorbeeld, veronderstel ek gaan terug na hierdie program en verander die 0,1 tot,
O, 0,28, en daardeur aandui dat Ek wil graag printf te printf te
28 plekke van presisie.
Kom ons nou ook red en stel die program, hierdie keer met make floats2.
Doen dit met dot streep floats2.
En, liewe God, hierdie keer kan ek nie sien 0.1, maar 0.10000000, wat is redelik
tot dusver goed.
Maar dan, 14901161193847656250.
>> Wel, wat gaan aan?
Wel, dit blyk dat 'n float is tipies gestoor binnekant van 'n rekenaar
met 32 ​​stukkies.
32 is natuurlik 'n beperkte aantal, wat impliseer dat jy net kan stel
met 32 ​​stukkies 'n beperkte aantal swaai punt waardes.
Ongelukkig, wat beteken dat die rekenaar kan nie alle moontlike verteenwoordig
swaai punt getalle, of reële getalle, wat bestaan ​​in die wêreld,
want dit het net so baie stukkies.
>> En ja, wat die rekenaar se skynbaar gedoen in hierdie geval is verteenwoordig 1/10 tot
die naaste moontlike wisseltrofee punt waarde wat dit kan.
Maar as ons kyk, as ons hier het tot 28 desimale plekke, het ons begin om te sien dat
onakkuraatheid.
So dit is 'n probleem met geen perfekte oplossing.
Ons kan 'n dubbele plaas van 'n float gebruik, wat geneig is om 64 stukkies te gebruik as
teenoor 32.
Maar natuurlik, 64 is ook eindig, so sal die probleem
bly, selfs met dubbelspel.