>> 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.