如何在python中键入浮点无限文字

fma*_*ark 71 python floating-point portability numerical

如何在python中键入浮点无限文字?

我听说

 inf = float('inf')
Run Code Online (Sandbox Code Playgroud)

是不便携的.因此,我有以下建议:

 inf = 1e400
Run Code Online (Sandbox Code Playgroud)

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

use*_*019 60

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

float()函数现在将字符串nan转换为IEEE 754 Not A Number值,+ inf和-inf转换为正或负无穷大.这适用于任何具有IEEE 754语义的平台.

  • @fmark:祝你找到一个运行Python但没有IEEE 754语义的平台.理论上,`float('inf')`应该在这些平台上引发'ValueError`,但据我所知,这种行为从未经过测试,因为Python(至少是Python的最新版本)还没有满足这样的要求.平台.在实践中不要担心. (15认同)

ken*_*ytm 16

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

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


Joh*_*ooy 11

也许你可以做这样的事情

try:
    inf = float('inf')
except:  # check for a particular exception here?
    inf = 1e30000
Run Code Online (Sandbox Code Playgroud)

  • +1.一般来说,`float('inf')`绝对是首选.甚至可能'inf = 1e30000`可能会开始引发`OverflowError`,而不是在未来的Python版本中产生无穷大. (6认同)