Как мне ввести бесконечный литерал с плавающей запятой в 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