barplot - Valor para épsilon en Python
pandas plot (3)
¿Hay un valor estándar para (o un método para obtener) épsilon en Python? Necesito comparar valores de punto flotante y quiero comparar con la menor diferencia posible.
En C ++ se proporciona una función numeric_limits::epsilon( )
que proporciona el valor de épsilon para cualquier tipo de datos dado. ¿Hay un equivalente en Python?
Como se publicó strcat , hay sys.float_info.epsilon
.
Pero no olvide los inconvenientes de usarlo como un margen de error absoluto para las comparaciones de punto flotante. Por ejemplo, para números grandes, el error de redondeo podría exceder épsilon.
Si cree que necesita una actualización, la referencia estándar es Lo que todo científico informático debería saber sobre la aritmética de punto flotante , o para una revisión más sencilla, puede consultar la Guía de punto flotante .
La información está disponible en sys.float_info
, que corresponde a float.h en C99.
>>> import sys
>>> sys.float_info.epsilon
2.220446049250313e-16
Sorprendido nadie mencionó esto aquí; Creo que muchas personas usarían numpy.finfo (tipo (variable)) .eps en su lugar. O .resolution
si es para evaluar la precisión.
Tenga en cuenta que finfo
es solo para tipos de punto flotante, y que también funciona con el propio tipo float
Python (es decir, no restringido a los tipos de numpy). El equivalente para los tipos enteros es iinfo
, aunque no contiene información de precisión (porque, bueno, ¿por qué lo haría?).