web-dev-qa-db-fra.com

Comment puis-je taper un littéral infini à virgule flottante dans python

Comment taper un littéral infini à virgule flottante en python?

J'ai entendu

 inf = float('inf')

n'est pas portable. Ainsi, j'ai eu les recommandations suivantes:

 inf = 1e400

Est-ce l'un de ces standards ou portable? Quelle est la meilleure pratique?

70
fmark

En python 2.6 il est portable si le CPU le supporte

La fonction float () transformera maintenant la chaîne nan en une valeur IEEE 754 Not A Number, et + inf et -inf en infini positif ou négatif. Cela fonctionne sur n'importe quelle plate-forme avec la sémantique IEEE 754.

60
Mark

float('inf') n'est pas portable comme dans pas portable retour à Python 2.5 lorsque la sortie de chaîne varie selon les plates-formes. À partir de 2.6 et au-delà float('inf') est garanti pour fonctionner sur les plateformes de conformité IEEE-754 (réf: http://www.python.org/dev/peps/pep-0754/ ).

(Et la recommandation semble être de l'ordre de 1e30000, pas seulement 1e400.)

16
kennytm

Vous pourriez peut-être faire quelque chose comme ça

try:
    inf = float('inf')
except:  # check for a particular exception here?
    inf = 1e30000
11
John La Rooy