>> DAVID Malan: Let 's tagad trieciens jūsu prātā.
Izrādās reālajā pasaulē 1 dalīts līdz 10 patiešām 1/10, vai 0.1.
Bet datoriem, kas ir tikai ierobežots bitu skaitu, ar kuru
pārstāvēt ciparus, jūs ne vienmēr var pārstāvēt numurus, piemēram, 1/10, ar
perfekta precizitāte.
Citiem vārdiem sakot, datori dažkārt veikt jurisprudences un nav
vienmēr atspoguļo to, cik jūs vēlaties, kā precīzi, kā jūs plānojat.
>> Piemēram, pieņemsim, ka es dodos atpakaļ šī programma un mainīt 0.1 līdz,
oh, 0.28, tādējādi norādot, ka Es gribētu printf printf
28 vietas precizitāti.
Pieņemsim tagad glābt un sastādīt programmu, šoreiz ar make floats2.
Palaist to ar dot slash floats2.
Un dārgais Dievs, šoreiz es redzu ne 0.1, bet 0.10000000, kas ir diezgan
labi līdz šim.
Bet tad, 14901161193847656250.
>> Nu, kas notiek?
Nu, izrādās, ka pludiņš ir parasti glabājas iekšpusē datoru
ar 32 bitiem.
32 ir acīmredzami ierobežots skaits, kas nozīmē, ka jūs varat tikai pārstāvēt
ar 32 bitu noteiktu skaitu no peldošā punkta vērtības.
Diemžēl, tas nozīmē, ka dators nevar pārstāvēt visas iespējamās
peldošā komata skaitļus, vai reāli skaitļi, kas pastāv pasaulē,
tāpēc, ka tas ir tikai tik daudz bitiem.
>> Un tā, ko dators ir acīmredzami izdarīts šajā gadījumā ir sastāda 1/10 to
iespējami tuvākā peldošā punkta vērtība, ka tā var.
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
neprecizitāte.
Tātad šī ir problēma ar nav ideāls risinājums.
Mēs varam izmantot dubultu vietā pludiņa, kas mēdz izmantot 64 bitu kā
nevis 32.
Bet, protams, 64 arī ir ierobežots, tāpēc problēma
paliek pat ar dubultspēlēs.