martes, abril 15, 2008

El famoso formato IEEE754

Este es el archiconocido formato para representar números en coma flotante.

No niego que sea un buen formato, pero es propenso a muchos errores. Tanto de técnicos como no técnicos.


Este formato no es un formato de números exactos, pero todos los lenguajes y sistemas que trabajan con él permiten hacer comparaciones de igualdad

Nunca lo he entendido.

Prueba en tu sistema favorito...

1*(0.5-0.4-0.1)
pensarás que es cero, ¿pero lo es en tu sistema?

(43.1-43.2)+1
pensarás que es 0.9 ¿pero que resultado da en tu sistema?


Lo que me ha sorprendido mucho es que OpenOffice hace las dos comparaciones correctamente, pero no el Excel


El problema, es viejo y conocido.

Un número representado exactamente en decimal, puede ser periódico en binario y viceversa


Entonces

¿PORQUÉ CARAJO LOS SISTEMAS PERMITEN COMPARAR COSAS QUE NO SON EXACTAS?


Y si lo hacen, al menos deberían tomarse las molestias de corregir esos defectos potenciales en la gran mayoría de casos como hace OpenOffice (y no hace Mocosoft Office)



Y además, los pobrecillos usarios de estos números pueden pensar que la suma es asociativa consigo misma y lo mismo para la multiplicación y división, pero no es así


No es necesariamente lo mismo...


(a+b)+c ~ a+(b+c)

(a*b)*c ~ a*(b*c)



Y mucho más evidente...


(a*b)/c /= a*(b/c)



Que los informáticos se tropiecen con esto... Pues que aprendan porque para eso son informáticos y deberían saberlo.

Pero es que esto también le toca las narices a los usuarios de hojas de cálculo como Excel.



En este caso gana por goleada OpenOffice, que se procupa por ser coherente con el usuario

No hay comentarios: