Las matemáticas de punto flotante de Python son incorrectas [duplicado]

Resuelto gadgetmo asked hace 12 años • 2 respuestas
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?

gadgetmo avatar Aug 14 '12 17:08 gadgetmo
Aceptado

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.

Martijn Pieters avatar Aug 14 '2012 11:08 Martijn Pieters

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.

Richard Barrell avatar Aug 14 '2012 12:08 Richard Barrell