如何通过Python标准库数学函数获取nan与math.inf?
Python中NaN与Inf的相关问题解答
一、返回NaN的标准库函数
Python标准库的数学函数里确实存在会返回NaN的情况,并非只能手动构造。比如:
- 当传入超出定义域的参数时,
math.acos(1.1)、math.asin(1.1)这类函数会直接返回NaN(因为余弦、正弦值的范围仅为[-1,1],超出该范围的输入没有有效实数解); - 一些浮点数运算场景也会产生NaN,比如
float('inf') - float('inf')、0.0 * float('inf'),不过这些属于运算而非函数调用。
二、NaN的用途
NaN并非仅用来表示缺失数据,它是IEEE 754标准定义的特殊浮点值:
- 除了标记缺失、无效的数据外,当数学运算或函数调用没有有效实数结果(且不属于无穷大的情况)时,就会返回NaN,比如前面提到的
acos(1.1),就是运算本身无合法实数解,所以用NaN表示这个结果。
三、获取Inf的方式
获取无穷大(Inf)的方式有很多,除了直接构造外,也可以通过函数或运算得到:
- 直接构造:
inf = float("inf") # 或 from math import inf - 通过标准库函数返回:
math.exp(1000):指数运算结果超出浮点数范围,返回正无穷;math.log(0.0):对0取自然对数,返回负无穷(-inf);math.gamma(0.0):伽马函数在0处的结果为正无穷;
- 浮点数运算:
注意1/0或1.0/0.0会抛出ZeroDivisionError,但float('inf') * 2这类运算会保留无穷大值。
内容的提问来源于stack exchange,提问作者hiro protagonist
相关产品推荐
相关产品推荐

