DAVID MALAN: Lad os nu blæse din hjerne. Det viser sig i den virkelige verden 1 divideret med 10 er faktisk 1/10 eller 0,1. Men i computere, der kun har en begrænset Antallet af bits, som til repræsentere tal, kan du ikke altid repræsentere tal som 1/10 med perfekt præcision. Med andre ord computere undertiden at foretage vurderinger og ikke nødvendigvis repræsenterer det nummer, du ønsker så præcist som du ønsker. For eksempel antage, jeg går tilbage til dette program og ændre 0,1 til, åh, 0,28, hvilket indikerer, at Jeg vil gerne printf til printf til 28 steder af præcision. Lad os nu gemme og kompilere programmet, denne gang med make floats2. Kør det med dot skråstreg floats2. Og, kære Gud, denne gang jeg ser ikke 0,1, men 0.10000000, hvilket er temmelig godt hidtil. Men så, 14901161193847656250. Nå, hvad sker der? Tja, det viser sig, at en float er opbevares typisk inde i en computer med 32 bit. 32 er naturligvis et endeligt antal, som indebærer, at du kun kan repræsentere med 32 bit et endeligt antal af floating point-værdier. Desværre, det betyder, at computer kan ikke repræsentere alle mulige floating point tal eller reelle tal, der findes i verden, fordi den kun har så mange bits. Og så, hvad computeren er tilsyneladende gjort i dette tilfælde udgør 1/10 til den tættest mulige flydende pointværdi, at det kan. Men hvis vi ser, som vi har her, til 28 decimaler, begynder vi at se, at upræcise. Så dette er et problem med ingen perfekt løsning. Vi kan bruge en dobbelt i stedet for en svømmer, som har en tendens til at anvende 64 bit som modsætning til 32. Men selvfølgelig, 64 er også begrænset, så problemet vil forblive selv med double.