如何在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中输入浮点无穷大文字的主要内容,如果未能解决你的问题,请参考以下文章

如何在Haskell中产生无穷大?

如何在 Python 中表示无限数?

在python中//是啥意思?

python中%代表啥意思?

python的//是啥

python中//是啥意思