【问题标题】:python's negative threshold, the lowest non-infinity negative number?python的负阈值,最低的非无穷负数?
【发布时间】:2014-10-19 01:21:06
【问题描述】:

python 可表示负数的阈值是多少? Python 将任何其他值称为负无穷大的最小数字是多少?

【问题讨论】:

  • Python long 仅受机器内存限制。没有单一的实用答案。
  • @recursive 这个问题没有指定整数,只有数字。有一个最小的非无限浮点数,“无限”作为实际值确实暗示(至少有一点)浮点值。
  • Long 也是数字,它们低于最低的有限浮点数。

标签: python numbers threshold infinity


【解决方案1】:

没有最大的负整数,因为 Python 整数具有任意精度。大于负无穷大的最小浮点数(根据您的实现,可以表示为-float('inf'),可在sys.float_info 中找到。

>>> import sys
>>> sys.float_info.max
1.7976931348623157e+308

实际值取决于实际实现,但通常使用 C 库的 double 类型。由于浮点值通常使用符号位,因此最小的负值只是最大正值的倒数。此外,由于浮点值的存储方式(尾数和指数分开),您不能简单地从“最小值”值中减去一个小值并返回负无穷大。例如,由于精度有限,减去 1 只会返回相同的值。

(换句话说,可能的float 值是实际实数的一小部分,对两个float 值的运算不一定等同于对“等价”实数的相同运算。)

【讨论】:

  • 这是正确的想法,除了你显示的最大浮点数小于正无穷大。你需要负号,所以表达式应该是 >>> -sys.float_info.max
  • 另一种使用 numpy 获取浮点类型最大负数的方法是 np.nextafter(-np.inf, 0)np.nextafter(-np.inf, 0, dtype=np.float32)。这也适用于最小的非零正数np.nextafter(0, np.inf)
猜你喜欢
  • 2013-11-29
  • 2015-07-06
  • 2020-09-14
  • 2018-01-09
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
相关资源
最近更新 更多