float('inf') 表示正无穷
-float('inf') 或 float('-inf') 表示负无穷
其中,inf 均可以写成 Inf
起步
在python中整数溢出不用担心,因为python理论上可以表示大整数,直到内存被挤出为止。编程中经常需要无穷大。例如,从一组数字中过滤掉最小的数字。一般会使用一个临时变量来存储最终结果,对变量进行一一比较,不断更新。而这个临时变量一般需要初始化为无穷大或第一个元素的值。
正无穷大与负无穷大
python 中没有特殊的语法来表示这些值,但可以使用 float() 创建它们:
>>> a = float("inf")
>>> b = float("-inf")
>>> a
inf
>>> b
-inf
为了测试这些值的存在,使用 math.isinf() 进行判断:
>>> import math
>>> math.isinf(a)
True
>>> math.isinf(b)
True
推荐学习《
》
无穷大数在执行数学计算的时候会传播
这类似于数学中描述的内容。无穷大加上一个常数仍然是无穷大,无穷大等于无穷大:
>>> a = float('inf')
>>> a + 45
inf
>>> a * 10
inf
>>> 10 / a
0.0
>>> float("inf") == float("inf")
True
无穷大在比较中比任何一个数都要大。
正无穷与负无穷相加的结果是什么
有些操作时未定义的并会返回一个 NaN 结果:
>>> a = float('inf')
>>> a/a
nan
>>> b = float('-inf')
>>> a + b
nan
表示非数字的 NaN
nan 值在所有操作中也会传播,并且不会产生异常:
>>> c = float('nan')
>>> c + 23
nan
>>> c / 2
nan
>>> c * 2
nan
>>> math.sqrt(c)
nan
使用 math.isnan() 可以判断值是否是 NaN:
>>> math.isnan(c)
True
nan 值的任何比较操作都是返回 False :
>>> float("nan") == float("nan")
False
>>> c > 3
False
更安全的类型转换
由于无穷大的存在,字符串加载浮点数会出现一些异常,这个转换过程不会抛出异常。如果程序员想要更改 python 的默认行为,他们可以使用 fpectl 模块,但它在标准 Python 构建中未启用,它依赖于平台,并且针对专家程序员。这里是一个比较简单的转换,就是加一个isdigit()判断:
def str2float(ss):
if not ss.isdigit():
raise ValueError
return float(ss)
sss = "inf"
a = str2float(sss)
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 什么是python自动化运维?01/14
- ♥ python K-NN算法优缺点12/06
- ♥ python3.7如何验证登录是否成功?11/20
- ♥ *arg 在 python 中是什么意思?09/01
- ♥ 如何在 python3 操作系统中使用取消链接?01/11
- ♥ 如何用python打开文件10/01
内容反馈