Как мне ввести бесконечный литерал с плавающей запятой в Python - PullRequest
69 голосов
/ 27 мая 2010

Как мне ввести литерал бесконечности с плавающей точкой в ​​python?

Я слышал

 inf = float('inf')

не является переносимым. Таким образом, я рекомендовал следующее:

 inf = 1e400

Это либо стандарт, либо портативный? Что такое лучшая практика?

Ответы [ 3 ]

60 голосов
/ 27 мая 2010

В Python 2.6 он переносим, ​​если процессор поддерживает его

Функция float () теперь будет поворачивать струнный нан в IEEE 754 не A Числовое значение и + inf и -inf в положительная или отрицательная бесконечность. это работает на любой платформе с IEEE 754 семантика.

16 голосов
/ 27 мая 2010

float('inf') является непереносимым, как в непереносимом назад к Python 2.5, когда вывод строки зависит от платформы. Начиная с версии 2.6 float('inf') гарантированно работает на платформах, соответствующих стандарту IEEE-754 (ref: http://www.python.org/dev/peps/pep-0754/).

(И, похоже, рекомендация находится в диапазоне 1e30000, а не только 1e400.)

11 голосов
/ 27 мая 2010

Возможно, вы могли бы сделать что-то вроде этого

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