Как мне ввести бесконечный литерал с плавающей запятой в Python

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

я слышал

 inf = float('inf')

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

 inf = 1e400

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

4 ответа

Решение

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

Функция float() теперь превратит строку nan в значение IEEE 754 Not A Number, а +inf и -inf в положительную или отрицательную бесконечность. Это работает на любой платформе с семантикой IEEE 754.

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

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

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

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

Начиная с Python 3.6 вы можете использовать math.inf .

      import math
math.inf
Другие вопросы по тегам