DAVID MALAN: Ahora vamos a volar tu mente. Resulta que en el mundo real 1 dividido por 10 es de hecho un décimo, o 0.1. Pero en los equipos que sólo tienen un número finito número de bits con el cual representar los números, no siempre se puede representar números como 1/10 con precisión perfecta. En otras palabras, los ordenadores a veces tienen para hacer llamadas de juicio y no necesariamente representan el número al que quiero la manera más precisa que tenía planeado. Por ejemplo, supongamos que yo vuelva a este programa y cambiar el 0,1 y, oh, 0,28, lo que indica que Me gustaría a printf printf para 28 lugares de la precisión. Ahora vamos a guardar y compilar el programa, esta vez con maquillaje floats2. Ejecutar con floats2 slash dot. Y, por Dios, esta vez no veo 0.1, pero 0.10000000, que es bastante bueno hasta ahora. Pero entonces, 14901161193847656250. Bueno, ¿qué está pasando? Bueno, resulta que es un flotador normalmente almacenado en el interior de una computadora con 32 bits. 32 es, obviamente, un número finito, que implica que sólo se puede representar con 32 bits de un número finito de valores de punto flotante. Por desgracia, eso significa que el computadora no puede representar todos los posibles Los números de punto flotante, o los números reales, que existen en el mundo, ya que sólo tiene tantos bits. Y así, lo que la computadora es al parecer hecho en este caso se representa 1/10 a el más cercano posible flotante valor en puntos que se puede. Pero si miramos, como lo hemos hecho aquí, a 28 decimales, empezamos a ver que imprecisión. Así que este es un problema con hay una solución perfecta. Podemos utilizar una doble en vez de una carroza, que tiende a utilizar 64 bits de como frente a 32. Pero, por supuesto, 64 también es finito, por lo que el problema se sigan presentando incluso con dobles.