72 votes

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

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

J'ai entendu

 inf = float('inf')

n'est pas portable. Ainsi, on m'a recommandé ce qui suit :

 inf = 1e400

L'un ou l'autre de ces éléments est-il standard ou portable ? Quelle est la meilleure pratique ?

61voto

Mark Points 21191

Sur python 2.6 il est portable si le CPU le supporte

La fonction float() va maintenant transformer la chaîne nan en une valeur IEEE 754 Not A et +inf et -inf en infini positif ou négatif. infini positif ou négatif. Ce site fonctionne sur toutes les plateformes avec IEEE 754. la sémantique.

16voto

KennyTM Points 232647

float('inf') est non portable, c'est-à-dire qu'il n'est pas portable depuis Python 2.5 lorsque la sortie de la chaîne de caractères varie d'une plate-forme à l'autre. À partir de la version 2.6 float('inf') est garanti pour fonctionner sur les plateformes conformes à la norme IEEE-754 (réf : http://www.python.org/dev/peps/pep-0754/ ).

(Et la recommandation semble se situer dans l'intervalle 1e30000, et pas seulement 1e400).

11voto

gnibbler Points 103484

Vous pourriez peut-être faire quelque chose comme ceci

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X