2010-05-27 114 views

回答

52

python 2.6它是便携式的,如果CPU支持它

浮子()函数现在将关闭 串楠成IEEE 754不是一个 数值,和+ INF和-INF成 正面或负面的无限。这个 在IEEE 754 语义的任何平台上工作。

+1

的平台上会发生什么事没有IEEE 754语义? – fmark 2010-05-27 09:15:14

+14

@fmark:祝您找到一个Python运行的平台,但它没有IEEE 754语义。理论上讲,'float('inf')'应该在这些平台上引发'ValueError',但据我所知,这种行为从来没有被测试过,因为Python(至少是Python的最新版本)至今尚未见过这样的平台。在实践中不要担心。 – 2010-05-27 10:09:32

12

float('inf')是不可移植的,因为在平台之间字符串输出不同时,不能移植回Python 2.5。从2.6开始,float('inf')保证可以在IEEE-754兼容平台上工作(参考号:http://www.python.org/dev/peps/pep-0754/)。

(和建议似乎是在范围1e30000,不只是1e400)

10

也许你可以做这样的事情

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

+1。一般来说,float('inf')'肯定是首选。甚至有可能“inf = 1e30000”可能会在未来的某个版本的Python中开始引发“OverflowError”而不是产生无穷大。 – 2010-05-27 10:06:59