📅  最后修改于: 2023-12-03 15:42:25.727000             🧑  作者: Mango
当我们在程序中执行 0/0
时,很容易抛出无限循环、崩溃甚至奔溃的异常。这是因为在数学运算中,除数不能为零。而程序中也是一样的道理。
在 Python 中,当我们执行 0/0
时会抛出一个 ZeroDivisionError
异常:
>>> 0/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
但是,有时候我们可能会需要得到一个特定的结果,比如 NaN
(Not a Number) 或者 Infinity
。在这种情况下,我们可以使用 Python 内置的 math
模块。
当我们将 float
数据类型的一个数值除以零时,会返回一个 NaN
:
>>> import math
>>> print(math.nan)
nan
>>> print(1.0/0.0)
inf
>>> print(0.0/0.0)
nan
注意,NaN
与任何数都不相等,包括它本身:
>>> x = math.nan
>>> y = math.nan
>>> x == y # False
>>> x != x # True
另一种常见的结果是返回 Infinity
,即正无穷或者负无穷:
>>> print(math.inf)
inf
>>> print(1.0/0.0)
inf
>>> print(-1.0/0.0)
-inf
注意,它们都可以用 float
类型表示,并且可以和其他数相加、相乘等运算:
>>> x = math.inf
>>> x + 1 # inf
>>> x * 2 # inf
>>> x / x # nan
当我们进行除法运算时,要注意除数不为零。在程序中,除数为零时会抛出异常,需要我们进行合理的处理。
有时候我们需要返回特定的结果,比如 NaN
或者 Infinity
。在这种情况下,我们可以使用 Python 内置的 math
模块来实现。