DAVID Malan: Ara anem a volar la teva ment. Resulta que en el món real 1 dividit per 10 és de fet un dècim, o 0.1. Però en els equips que només tenen un nombre finit nombre de bits amb el qual representar els números, no sempre es pot representar nombres com 1/10 amb precisió perfecta. En altres paraules, els ordinadors de vegades tenen per fer trucades de judici i no necessàriament representen el nombre al qual vull la manera més precisa que tenia planejat. Per exemple, suposem que jo torni a aquest programa i canviar el 0,1 i, oh, 0,28, el que indica que M'agradaria a printf printf per 28 llocs de la precisió. Ara anem a guardar i compilar el programa, aquesta vegada amb maquillatge floats2. Executar amb floats2 slash dot. I, per Déu, aquesta vegada no veig 0.1, però 0.10000000, que és bastant bo fins ara. Però llavors, 14901161193847656250. Bé, què està passant? Bé, resulta que és un flotador normalment emmagatzemat a l'interior d'un ordinador amb 32 bits. 32 és, òbviament, un nombre finit, que implica que només es pot representar amb 32 bits d'un nombre finit de valors de punt flotant. Per desgràcia, això significa que el ordinador no pot representar tots els possibles Els nombres de punt flotant, o els nombres reals, que hi ha al món, ja que només té tants bits. I així, el que l'ordinador és pel que sembla fet en aquest cas es representa 1/10 a el més proper possible flotant valor en punts que es pot. Però si mirem, com ho hem fet aquí, a 28 decimals, vam començar a veure que imprecisió. Així que aquest és un problema amb hi ha una solució perfecta. Podem utilitzar una doble en comptes d'una carrossa, que tendeix a utilitzar 64 bits de com davant 32. Però, és clar, 64 també és finit, de manera que el problema es segueixin presentant fins i tot amb dobles.