max(float('nan'), 1)
evalúa a nanPython: max/min funciones incorporadas dependen de orden de los parámetros
max(1, float('nan'))
evalúa a 1
¿Es el comportamiento previsto?
Gracias por las respuestas.
max
produce una excepción cuando el iterable está vacío. ¿Por qué el max
de Python no generaría una excepción cuando nan
está presente? O al menos hacer algo útil, como devolver nan
o ignorar nan
. El comportamiento actual es muy inseguro y parece completamente irracional.
Encontré una consecuencia aún más sorprendente de este comportamiento, así que acabo de publicar un related question.
... Realmente no parece romper el 'nan', porque 'max (0,5, float ('nan'), 1) 'devuelve 1. – khachik
@khachik: Solo digo que el resultado de 'max' depende del orden de los parámetros, lo cual es un poco inesperado para mí, incluso si solo ocurrió en un ejemplo. Pero de hecho también funciona en su ejemplo: 'max (float ('nan'), 1, 0.5)' devuelve a nan. – max
El error no está en max. El error es el hecho de que estás usando puntos flotantes y asumiendo que tienen un comportamiento matemático significativo. – Antimony