在Python中定义一个无限的值
在这篇文章中,我们将学习什么是 Python 中的无限值,以及为什么我们要使用无限值。我们还将学习如何在 Python 中用不同的方法来定义一个无限值。
在 Python 中定义无限值的传统方法
当你听到无穷大的时候,大多数人都认为有一种永远不会结束的东西,但是我们在Python中是如何对待无穷大的呢?假设你需要在Python脚本中存储一个无穷大的数字;那么,即使你可以用多个文件来存储数字,你也可以用一个更大的数字来存储一个文件。
由于Python语言是动态的,999999999999
,或者用多个文件存储更大的数字,都不足以在Python中定义一个无限大的数字。
在数学中,你可以使用有限的和无限的数字。Python 带来了一个特点,我们可以在一个特定的范围内定义一个有限数和一个无限数,就像在数学中一样;我们可以使用负的和正的无限数。
我们不能在其他编程语言中定义一个无限的数。在其他编程语言中,我们可以定义一个特定的数值集。
为了定义无穷大,我们可以使用float("inf")
来定义正无穷大,对于负无穷大,我们使用float("-inf")
。现在,我们来看看它在Python中是如何工作的。
假设我们在变量a
中有一个存储大数的值,要求说要检查a
变量是否比float("inf")
大。
>>> a=99999999999999999
>>> a_INF=float("inf")
>>> a_INF > a
True
>>> a_INF
inf
我们可以看到a_INF
大于a
,因为这是一个无限大的数字,所以这里有一个简单的方法来定义一个无限大的数字,不需要导入一个额外的模块。
我们还可以定义一个负的无限数。下面给出一个例子。
>>> Neg_INF=float("-inf")
>>> Neg_INF
-inf
使用Python中的数学模块定义一个无限的值
另一个定义无限数的功能是math.inf
。在math
模块中,inf
是一个变量,其中有一个无限的值。
首先,我们需要导入它,然后我们可以使用math.inf
将一个变量声明为一个无限值。让我们来看看我们如何做到这一点。
>>> import math
>>> M_INF=math.inf
>>> M_INF
inf
就像我们不用导入math
模块就可以定义正负无限一样,我们也可以用math
模块定义正负无限。让我们来看看。
>>> M_NEG_INF=-math.inf
>>> M_NEG_INF
-inf
使用Python中的Decimal()
函数定义一个无限的值
Python 中可用的第三种方法是使用decimal
模块来定义一个无穷大的数字。decimal
模块是另一个新的数据类型。
他们创建这种数据类型的原因是,浮点数并不准确。小数也是一个浮点数,但它的处理方式不同。
在导入decimal
模块的同时,我们可以使用Decimal()
函数来定义一个正的或负的无限值。
在Decimal()
函数中,我们可以将Infinity
作为一个字符串值传递,但这将是针对一个正值。如果我们想定义负值,我们将包括减号,如-Infinity
。
让我们看看如何使用Decimal()
函数和它的语法。为了更好地理解,我们将用一小段代码创建一个例子。
首先,我们将从decimal
模块中导入Decimal
函数,这样我们就可以用一个变量在内存中存储一个无限的数字。让我们看一看。
>>> from decimal import Decimal
>>> INF_POS_VAL=Decimal('infinity')
>>> INF_Neg_VAL=Decimal('-infinity')
>>> print(INF_POS_VAL)
Infinity
>>> print(INF_Neg_VAL)
-Infinity
所以这样一来,我们就可以得到一个无限的数值,并在不同的程序中用于不同的目的。
使用Python中的NumPy模块定义一个无限的值
最后一种也是最常见的定义无限值的方法是使用numpy
模块。numpy
模块也带来了一个使用numpy.inf
定义无限值的功能。
这与math
模块的工作原理相同。只是模块的名称有所改变。
让我们看一下。
>>> import numpy
>>> Num_Pos_INF=numpy.inf
>>> Num_Neg_INF=-numpy.inf
>>> print(Num_Pos_INF)
inf
>>> print(Num_Neg_INF)
-inf
在我们处理科学计算的不同 Python 脚本中,我们需要检查一个值是否是无限的。我们可以使用Python的isinf()
方法来检查。
我们不能正常地调用它,但是我们可以在导入math
之后调用它,因为isinf()
是math
模块的一个函数。由于isinf()
函数返回布尔值,如真或假,我们将放一个值来确定这个值是否是无限的。
如果我们使用isinf()
函数检查一个用整数或浮点数构成的值,这个函数会返回假,因为这是一个有限的值。
>>> import math
>>> val=999999999999
>>> math.isinf(val)
False
在什么情况下会返回真呢?
当我们传递一个负的或正的无限值时,它将返回真。在这两种情况下,我们都会得到一个真值。
>>> math.isinf(-numpy.inf)
True
所以这样一来,我们可以在Python中定义更大和更小的值。更多细节,你可以访问这里。