DAVID Malan: Poďme teraz fúkať vašu myseľ. Ukazuje sa, že v reálnom svete 1 rozdeleného od 10 je skutočne 1/10, alebo 0.1. Ale v počítačoch, ktoré majú obmedzené iba počet bitov, s ktorým predstavujú čísla, môžete vždy predstavujú čísla ako 1/10 s perfektné presnosť. Inými slovami, počítače niekedy aby úsudok volanie a nie nutne predstavovať číslo, ktoré Ak tak presne, ako máte v úmysle. Predpokladajme napríklad, že som sa vrátiť do tento program a zmeňte 0,1 k, oh, 0,28, čo naznačuje, že Rád by som printf printf na 28 miest presnosti. Poďme teraz uložiť a skompilovať program, tentoraz s make floats2. Spustite ho s dot lomítka floats2. A bože, to keď vidím to 0,1, ale 0.10000000, čo je celkom dobrý tak ďaleko. Ale potom, 14901161193847656250. No, čo sa deje? No, ukázalo sa, že plavák je obvykle uložené vo vnútri počítača s 32 bitmi. 32 je zrejme konečné číslo, ktoré znamená, že môžete predstavovať iba s 32 bity konečným počtom plávajúce čiarkou. Bohužiaľ, to znamená, že Počítač nemôže reprezentovať všetky možné čísla s plávajúcou desatinnou čiarkou, alebo reálne čísla, ktoré existujú vo svete, , Pretože to má len toľko bitov. A tak to, čo počítač je zrejme vykonáva v tomto prípade predstavovať 1/10 až najbližší možný plávajúce Bodová hodnota, že môže. Ale keď sa pozrieme, ako sme tu, na 28. desatinné miesta, začneme vidieť, že nepresnosť. Takže sa jedná o problém s žiadne dokonalé riešenie. Môžeme použiť double miesto float, ktorý inklinuje k použitiu 64 bitov ako na rozdiel od 32. Ale samozrejme, 64 je tiež konečný, takže problém bude zostávajú aj pri štvorhre.