Як ввести в python літерал нескінченності з плаваючою комою?
я чув
inf = float('inf')
є не портативним. Таким чином, я рекомендував наступне:
inf = 1e400
Це стандартний чи портативний? Що є найкращою практикою?
Відповіді:
У 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
float('inf')
є, безумовно, кращим, загалом. Можливо навіть, що "inf = 1e30000" може почати підвищуватись, OverflowError
а не створювати нескінченність у якійсь майбутній версії Python.
float('inf')
слід підніматиValueError
на цих платформах, але, наскільки мені відомо, така поведінка ніколи не перевірялася, оскільки Python (ну, принаймні, останні версії Python) ще не відповідав такій платформі. На практиці не турбуйтеся про це.