如何在python中输入浮点无穷大字面量


76

如何在python中输入浮点无穷大文字?

我听说

 inf = float('inf')

是非便携式的。因此,我有以下建议:

 inf = 1e400

这些标准还是便携式的?什么是最佳做法?

Answers:


63

python 2.6中,如果CPU支持,它是可移植的

float()函数现在会将字符串nan转换为IEEE 754非数字值,并将+ inf和-inf转换为正或负无穷大。这可以在具有IEEE 754语义的任何平台上使用。


15
@fmark:祝您找到一个可以运行Python但没有IEEE 754语义的平台。从理论上讲,float('inf')应该ValueError在这些平台上进行开发,但是据我所知,这种行为从未经过测试,因为Python(至少是Python的最新版本)还没有达到这样的平台。实际上,不用担心。
马克·迪金森

16

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

(建议似乎在1e30000范围内,而不仅仅是1e400。)


11

也许你可以做这样的事情

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

6
+1。 float('inf')通常,绝对是首选。甚至有可能'inf = 1e30000'可能会开始上升,OverflowError而不是在将来的某些Python版本中产生无限。
马克·迪金森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.