Question

Je rétroportage mon projet de Python 2.6 à Python 2.4 et 2.5. Dans mon projet, je float("inf"), et je trouve qu'il est disponible sur Python 2.5. Est-il un portage de celui-ci?

Était-ce utile?

La solution 4

J'ai créé un backport, testé sur Python 2.5+, peut probablement être facilement fait de travailler sur Python 2.4:

https://github.com/ refroidissement RR / garlicSim / blob / maître / garlicsim / garlicsim / general_misc / infinity.py

Autres conseils

Orthographe qu'il soit le long chemin ou le chemin court fonctionne très bien pour moi:

$ python2.4 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('infinity')+200"
inf
$ python2.4 -c "print float('infinity')+200"
inf

Le drapeau -c signifie "exécuter les arguments ci-après en tant que commande de python".

PEP754 (qui a été rejetée) ne mentionne votre question au sujet spécial valeurs IEEE-754. Il suggère d'utiliser quelque chose comme 1e300000 pour générer un débordement de virgule flottante et de créer inf, mais il ne note que ceci est laid et non garantie à être portables.

Vous devriez être en mesure de faire semblant par Python donnant un point flottant suffisamment grande constante à la place. Par exemple:

>>> 1e100000
inf
>>> float('inf') == 1e1000000
True
>>> float('inf') == 2e1000000
True

Le module décimal est disponible à partir du python 2.4 et supporte des nombres décimaux infinite positifs ou négatifs. Il ne se comporte pas toujours comme un flotteur (par exemple. L'ajout d'une virgule et un flotteur est pas pris en charge), mais fait la bonne chose pour la comparaison, ce qui était assez bon pour moi.

>>> decimal.Decimal('Infinity') > 1e300
True

Emprunts NumPy pour quelques lignes:

import numpy as np

inf = float(np.inf)

Ici, inf est un float régulier python , de sorte que vous don « pas besoin de se soucier de NumPy plus loin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top