【问题标题】:why does (10 + (-inf)) results in -inf?为什么(10 +(-inf))会导致-inf?
【发布时间】:2015-03-27 06:06:51
【问题描述】:

我尝试在 python 中添加float('-inf')10,据我所知-inf 小于所有其他值。

所以如果我添加-inf10 它应该给出10 作为答案。它没有将10 作为输出,而是给出-inf

-inf 是否大于 10

【问题讨论】:

  • 为什么你认为“-inf小于所有其他数字”意味着“-inf + 10等于10”?
  • 无穷大不是一个实数,它是一个想法。唯一可以加 10 等于 10 的就是 0。
  • @Terry,这在数学上可能是正确的,但对于没有无限存储容量的计算机来说,情况不一定如此:double d = 10; d += 10e-308; if (d == 10) printf ("equal\n"); 给出“相等”:-)
  • @TerryA 在浮点运算中根本不是这样。例如,许多非规范化的浮点数在加到 10 时会得到 10。还有 -0。

标签: python python-2.7 python-3.x numpy


【解决方案1】:

-inf 表示负无穷大。它比所有其他值“小”,因为它小于它们。向任何有限数添加负无穷仍然会得到负无穷。

【讨论】:

  • 另外我还有一个问题,float() 是一种用于创建浮点值的函数,但我们仍然使用它来创建 Nan、-INF 和 INF。那么是否可以以相同的方式使用 int() ?如果不是,那为什么?
  • @SelvaMathan:不,因为int 数据类型没有任何方法来表示这些值。 float 确实只是底层浮点实现的产物。
  • @SelvaMathan 大多数语言都遵循IEEE Standard for Floating-Point Arithmetic 的浮点数,这就是NaN+∞−∞ 之类的定义(尽管Python 没有正确遵循它;-))。
【解决方案2】:

-inf 最小的数,但这意味着它是最大量级的负数。它并不意味着它是最接近零而不实际为零的值(即最小的正数):

<---------------------------|-------------------------->
-inf                        0   10                   +inf

当你将一个巨大的负数加到 10 上时,你仍然会得到一个巨大的负数。这与-inf 的想法相同,只是无穷大不是实数。

【讨论】: