Exception Python中两种不同的浮点溢出

Exception Python中两种不同的浮点溢出,exception,floating-point,overflow,Exception,Floating Point,Overflow,我正在用python计算(1e308)**2和(1e308)*2进行测试。我也希望如此 两者都产生溢出,或 两者都产生inf 但是,(1e308)**2显示溢出异常,而(1e308)*2在不触发任何异常的情况下返回inf。有没有解释为什么他们行为不同?谢谢 In [98]: 1e308**2 --------------------------------------------------------------------------- OverflowError

我正在用python计算
(1e308)**2
(1e308)*2
进行测试。我也希望如此

  • 两者都产生溢出,或
  • 两者都产生
    inf
    但是,
    (1e308)**2
    显示溢出异常,而
    (1e308)*2
    在不触发任何异常的情况下返回
    inf
    。有没有解释为什么他们行为不同?谢谢

    In [98]: 1e308**2
    ---------------------------------------------------------------------------
    OverflowError                             Traceback (most recent call last)
    <ipython-input-98-29e84f241b45> in <module>()
    ----> 1 1e308**2
    
    OverflowError: (34, 'Result too large')
    
    In [99]: 1e308*2
    Out[99]: inf
    
    [98]中的
    1e308**2
    ---------------------------------------------------------------------------
    溢出错误回溯(上次最近调用)
    在()
    ---->1e308**2
    溢出错误:(34,‘结果太大’)
    In[99]:1e308*2
    Out[99]:inf
    
    主要是历史记录,再加上向后兼容性限制,很难在此处更改行为。有些人首先依靠
    1e308*1e308
    来获得无穷大。请参阅和链接问题以进行讨论