2010-05-27 15 views

Respuesta

52

En python 2.6 que es portátil si la CPU soporta

La función de flotación() pasará ahora a la cadena nan en un IEEE 754 no es un valor Número y + inf y -inf en infinito positivo o negativo Este funciona en cualquier plataforma con semántica IEEE 754 .

+1

¿Qué ocurre en las plataformas sin IEEE 754 semántica? – fmark

+14

@fmark: Buena suerte al encontrar una plataforma en la que se ejecuta Python pero que no tiene semántica IEEE 754. En teoría, 'float ('inf')' debe elevar 'ValueError' en estas plataformas, pero que yo sepa este comportamiento nunca ha sido probado, porque Python (bueno, las versiones recientes de Python, al menos) aún no se ha reunido plataforma. En la práctica, no te preocupes por eso. –

12

float('inf') no es portátil, ya que no es portátil de vuelta a Python 2.5 cuando la salida de cadena varía entre las plataformas. Desde 2.6 en adelante, float('inf') está garantizado para trabajar en plataformas IEEE-754-compliance (ref: http://www.python.org/dev/peps/pep-0754/).

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

10

Tal vez podría hacer algo como esto

try: 
    inf = float('inf') 
except: # check for a particular exception here? 
    inf = 1e30000 
+5

+1. 'float ('inf')' es definitivamente preferible, en general. Incluso es posible que 'inf = 1e30000' comience a generar 'OverflowError' en lugar de producir un infinito en alguna versión futura de Python. –

Cuestiones relacionadas