1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID MALAN: Ahora vamos a volar tu mente. 3 00:00:01,750 --> 00:00:06,500 Resulta que en el mundo real 1 dividido por 10 es de hecho un décimo, o 0.1. 4 00:00:06,500 --> 00:00:10,370 Pero en los equipos que sólo tienen un número finito número de bits con el cual 5 00:00:10,370 --> 00:00:14,290 representar los números, no siempre se puede representar números como 1/10 con 6 00:00:14,290 --> 00:00:15,500 precisión perfecta. 7 00:00:15,500 --> 00:00:18,640 En otras palabras, los ordenadores a veces tienen para hacer llamadas de juicio y no 8 00:00:18,640 --> 00:00:22,740 necesariamente representan el número al que quiero la manera más precisa que tenía planeado. 9 00:00:22,740 --> 00:00:27,020 >> Por ejemplo, supongamos que yo vuelva a este programa y cambiar el 0,1 y, 10 00:00:27,020 --> 00:00:32,073 oh, 0,28, lo que indica que Me gustaría a printf printf para 11 00:00:32,073 --> 00:00:34,350 28 lugares de la precisión. 12 00:00:34,350 --> 00:00:39,330 Ahora vamos a guardar y compilar el programa, esta vez con maquillaje floats2. 13 00:00:39,330 --> 00:00:41,910 Ejecutar con floats2 slash dot. 14 00:00:41,910 --> 00:00:49,980 Y, por Dios, esta vez no veo 0.1, pero 0.10000000, que es bastante 15 00:00:49,980 --> 00:00:51,070 bueno hasta ahora. 16 00:00:51,070 --> 00:00:57,830 Pero entonces, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Bueno, ¿qué está pasando? 18 00:00:58,880 --> 00:01:02,280 Bueno, resulta que es un flotador normalmente almacenado en el interior de una computadora 19 00:01:02,280 --> 00:01:03,500 con 32 bits. 20 00:01:03,500 --> 00:01:07,340 32 es, obviamente, un número finito, que implica que sólo se puede representar 21 00:01:07,340 --> 00:01:11,050 con 32 bits de un número finito de valores de punto flotante. 22 00:01:11,050 --> 00:01:14,980 Por desgracia, eso significa que el computadora no puede representar todos los posibles 23 00:01:14,980 --> 00:01:18,110 Los números de punto flotante, o los números reales, que existen en el mundo, 24 00:01:18,110 --> 00:01:19,980 ya que sólo tiene tantos bits. 25 00:01:19,980 --> 00:01:23,940 >> Y así, lo que la computadora es al parecer hecho en este caso se representa 1/10 a 26 00:01:23,940 --> 00:01:26,880 el más cercano posible flotante valor en puntos que se puede. 27 00:01:26,880 --> 00:01:31,050 Pero si miramos, como lo hemos hecho aquí, a 28 decimales, empezamos a ver que 28 00:01:31,050 --> 00:01:31,970 imprecisión. 29 00:01:31,970 --> 00:01:34,480 Así que este es un problema con hay una solución perfecta. 30 00:01:34,480 --> 00:01:38,060 Podemos utilizar una doble en vez de una carroza, que tiende a utilizar 64 bits de como 31 00:01:38,060 --> 00:01:39,410 frente a 32. 32 00:01:39,410 --> 00:01:42,290 Pero, por supuesto, 64 también es finito, por lo que el problema se 33 00:01:42,290 --> 00:01:43,630 sigan presentando incluso con dobles. 34 00:01:43,630 --> 00:01:46,323