Excel 2007: 65′535 = 100000
Han encontrado este “divertido bug” en Excel 2007. Lo he comprobado yo mismo y es cierto… cuando el resultado de una operación es 65.535, la cifra se “redonda” a 100000. Porque lo dice Bill Gates Y PUNTO. Si viene a ser lo mismo, coño…
¿Pero qué demonios tiene esta dichosa cifra? ¿Acaso no mola que el siguiente número (65536) sea potencia de 2? ¿Tendrá algo que ver que se trata del número de bytes que conforman el Ping de la Muerte? ¿Será una broma macabra del creador de Synapse para controlarnos a todos y atarnos en la tinieblaaaas?
No, aún peor… ¿y todos los bugs que desconocemos? ¿”Ánde andarán”?¿CUANTOS SERÁN Y DE QUÉ FATÍDICA FORMA SERÁN DESCUBIERTOS? (tchaaan, tchaaaan…)
En fin… espero que en mi entidad bancaria no usen software de Microsoft para calcular los intereses de mi cuenta… ni mi compañía aérea para calcular el combustible de los aviones!, ni mi centro de salud para recetarme medicación!!!… ni… nadie!!! XD
October 2nd, 2007 at 6:02 pm
Hace un par de días estuve leyendo bastante sobre el bug porque me parece un caso interesante que una cosa así suceda. ¿Cómo es posible que salga mal un cálculo en un ordenador?
El caso es que (obviamente) Excel si hace las cuentas bien. Al fin y al cabo, una multiplicación así se limita a pasarsela a alguna de las unidades de multiplicación en punto flotante del micro.
¿Cual es el fallo entonces? La rutina que pasa de binario a decimal. Resulta que entre 65534.99999999995 y 65535 existen 6 numeros binarios que hacen que la rutina falle, y otros 6 entre 65535.99999999995 y 65536, para un total de 12. La cosa es que si la cuenta cae en alguno de esos valores malditos, el valor se MUESTRA mal. ¡Pero se calcula bien!
De hecho, si operamos con la celda, el resultado sale bien. Podéis hacer la prueba: metéis los valores en una celda y luego le sumáis 2 (ojo, si sumáis 1 volvéis a caer en un valor maldito).
Como somos todos ingenieros (hola JR!) me puedo saltar los detalles, pero el caso es que cuando el micro (no excel) intenta calcular 850 por 77′1, devuelve uno de estos valores malditos por las limitaciones de la representación binaria en punto flotante (en qué asignatura estudiábamos esto?) asumiendo que luego las capas superiores redondearán bien al hacer la cuenta en decimal. Y de ahí el lío.
Para una discusión ilustradora sobre el tema, recomiendo este post de un miebro del equipo de desarrollo de Excel 2007 (lo que no recomiendo son los 200 comentarios imbéciles que hay después del post): http://blogs.msdn.com/excel/archive/2007/09/25/calculation-issue-update.aspx
Y esto es una explicación para no ingenieros:
http://www.joelonsoftware.com/items/2007/09/26b.html