如何在python中输入浮点无穷大文字
Posted
技术标签:
【中文标题】如何在python中输入浮点无穷大文字【英文标题】:How do I type a floating point infinity literal in python 【发布时间】:2011-02-24 13:45:53 【问题描述】:如何在 python 中输入浮点无穷大字面量?
听说过
inf = float('inf')
是不可移植的。因此,我有以下建议:
inf = 1e400
这些是标准的还是可移植的?最佳做法是什么?
【问题讨论】:
【参考方案1】:也许你可以这样做
try:
inf = float('inf')
except: # check for a particular exception here?
inf = 1e30000
【讨论】:
+1。一般来说,float('inf')
绝对是首选。甚至有可能'inf = 1e30000` 可能会开始提高 OverflowError
而不是在未来的 Python 版本中产生无穷大。【参考方案2】:
float('inf')
是不可移植的,因为当字符串输出因平台而异时,不能移植回 Python 2.5。从 2.6 起,float('inf')
保证可以在符合 IEEE-754 的平台上工作(参考:http://www.python.org/dev/peps/pep-0754/)。
(而且建议似乎在 1e30000 范围内,而不仅仅是 1e400。)
【讨论】:
【参考方案3】:在python 2.6 中,如果 CPU 支持它是可移植的
float() 函数现在将 将 nan 字符串转换为 IEEE 754 Not A 数值,和 +inf 和 -inf 成 正无穷或负无穷。这 适用于任何符合 IEEE 754 的平台 语义。
【讨论】:
@fmark:祝你好运找到一个运行 Python 但没有 IEEE 754 语义的平台。理论上,float('inf')
应该在这些平台上引发 ValueError
,但据我所知,这种行为从未经过测试,因为 Python(至少是最新版本的 Python)尚未满足这样的平台。在实践中不用担心。以上是关于如何在python中输入浮点无穷大文字的主要内容,如果未能解决你的问题,请参考以下文章