Las matemáticas de punto flotante de Python son incorrectas [duplicado]
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> 4.2 - 1.8
2.4000000000000004
>>> 1.20 - 1.18
0.020000000000000018
>>> 5.1 - 4
1.0999999999999996
>>> 5 - 4
1
>>> 5.0 - 4.0
1.0
¿Por qué Python se equivoca en las matemáticas?
Has alcanzado un nuevo nivel en informática y estás alcanzando la mayoría de edad.
Por lo tanto, ahora está listo para el siguiente paso. He sido autorizado por el propio BDFL para revelarle el siguiente documento súper secreto. Los antiguos lo entendieron y lo descifraron primero, ¡y ahora tú también lo harás!
La guía de punto flotante
¡Trate este documento con cuidado! ¡Comparte esto solo con personas que sepas que han llegado a las mismas conclusiones desconcertantes!
Nota del moderador
Esta respuesta no es representativa de los estándares de calidad esperados en Stack Overflow. Sin embargo, inesperadamente ha desarrollado vida propia y ahora se conserva únicamente por su importancia histórica.
Para obtener una guía dolorosamente rigurosa sobre cómo funciona la aritmética de punto flotante e instrucciones completas sobre cómo calcular qué tan grandes serán los errores en sus respuestas, necesita:
Lo que todo informático debería saber sobre la aritmética de punto flotante
Una vez que hayas leído eso, deberías buscar notas específicamente sobre el 8087, porque implementa mal el IEEE 754 y esto puede causar nuevos problemas interesantes en tu vida.