DAVID Malan: Imos agora explotar a súa mente. Acontece que no mundo real 1 dividido por 10 é efectivamente 1/10, ou 0,1. Pero, en ordenadores que só ten un finito número de bits co que representar números, non poderá representar números como 1/10 en precisión perfecta. Noutras palabras, ás veces, teñen ordenadores para facer chamadas de xuízo e non representan, necesariamente, o número que quero tan precisamente como pretende. Por exemplo, supoñamos que eu volva para este programa e cambiar a 0,1 e, Oh, 0,28, o que indica que Gustaríame printf para printf para 28 locais de precisión. Imos agora gardar e compilar o programa, esta vez con make floats2. Executa-o con un punto floats2 barra. E, meu Deus, esta vez eu non ver 0,1, pero 0.10000000, que é moi bo ata agora. Pero entón, 14901161193847656250. Ben, o que está a suceder? Ben, acontece que un float é tipicamente almacenados dentro dun ordenador con 32 bits. 32 é, obviamente, un número finito, que implica que só se pode representar con 32 bits un número finito de valores de punto flotante. Por desgraza, isto significa que o ordenador non pode representar as posibles números de punto flotante, ou números reais, que existen no mundo, porque só ten tantos bits. E así que o ordenador é aparentemente feito neste caso é representar 1/10 a o máis próximo posible flotante valor do punto que pode. Pero se olharmos, como temos aquí, a 28 de cifras decimais, comezamos a ver que imprecisión. Polo tanto, este é un problema co ningunha solución perfecta. Podemos usar unha parella en vez de un coche alegórico, que tende a usar 64 bits como canto de 32. Pero, claro, 64 tamén é finito, entón o problema vai permanecen mesmo con dobres.