2010-05-27 3 views

Répondre

52

En python 2.6 il est portable si la CPU supporte

La fonction float() va maintenant tourner la chaîne nan dans un IEEE 754 Non Valeur Number et + inf et -inf dans infinité positive ou négative. Cette fonctionne sur toute plate-forme avec la sémantique IEEE 754 .

+1

Qu'est-ce qui se passe sur les plates-formes sans IEEE 754 sémantique? – fmark

+14

@fmark: Bonne chance pour trouver une plate-forme sur laquelle Python fonctionne mais qui n'a pas la sémantique IEEE 754. En théorie, 'float ('inf')' devrait lever ValueError sur ces plateformes, mais à ma connaissance, ce comportement n'a jamais été testé, car Python (enfin, les versions récentes de Python, au moins) n'a pas encore rencontré un tel Plate-forme. En pratique, ne vous inquiétez pas à ce sujet. –

12

float('inf') est non portable comme non portable retour à Python 2.5 lorsque la sortie de la chaîne varie entre les plates-formes. A partir de 2.6 et au-delà float('inf') est garanti pour fonctionner sur les plates-formes IEEE-754 (ref: http://www.python.org/dev/peps/pep-0754/).

(Et la recommandation semble être dans la gamme 1e30000, non seulement 1e400.)

10

Peut-être que vous pourriez faire quelque chose comme ça

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

+1. 'float ('inf')' est définitivement préférable, en général. Il est même possible que 'inf = 1e30000' puisse commencer à élever 'OverflowError' au lieu de produire un infini dans une future version de Python. –

Questions connexes