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

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

Я услышал

 inf = float('inf')

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

 inf = 1e400

Действительно ли или их является стандартным, или портативным? Что такое лучшая практика?

70
задан fmark 30 May 2010 в 05:40
поделиться

3 ответа

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

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

60
ответ дан 24 November 2019 в 13:29
поделиться

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

try:
    inf = float('inf')
except:  # check for a particular exception here?
    inf = 1e30000
11
ответ дан 24 November 2019 в 13:29
поделиться

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

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

16
ответ дан 24 November 2019 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: