Cómo escribo un literal infinito de coma flotante en python


¿Cómo escribo un literal infinito de coma flotante en python?

He oído

 inf = float('inf')

No Es portátil. Por lo tanto, me han recomendado lo siguiente:

 inf = 1e400

Es cualquiera de estos estándar, o portátil? ¿Qué es la mejor práctica?

Author: fmark, 2010-05-27

3 answers

En python 2.6 es portable si la CPU lo soporta

La función float () ahora girará la cadena nan en un IEEE 754 No A Valor del número, y + inf y-inf en infinito positivo o negativo. Este funciona en cualquier plataforma con IEEE 754 semántica.

 57
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-27 09:11:28

float('inf') no es portable como en no portable back to Python 2.5 cuando la salida de cadena varía entre plataformas. A partir de la 2.6 float('inf') está garantizado para funcionar en plataformas de cumplimiento IEEE-754 (ref: http://www.python.org/dev/peps/pep-0754/).

(Y la recomendación parece estar en el rango 1e30000, no solo 1e400.)

 13
Author: kennytm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-27 09:13:13

Tal vez podrías hacer algo como esto

try:
    inf = float('inf')
except:  # check for a particular exception here?
    inf = 1e30000
 11
Author: John La Rooy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-24 07:10:34