起步
python中整型不用担心溢出,因为python理论上可以表示无限大的整数,直到把内存挤爆。而无穷大在编程中常常需要的。比如,从一组数字中筛选出最小的数字。一般使用一个临时变量用于存储最后结果,变量去逐个比较和不断地更新。而这临时变量一般要初始无穷大或者去第一个元素的值。
正无穷大与负无穷大
python中并没有特殊的语法来表示这些值,但是可以通过 float()
来创建它们:
>>> a = float("inf")>>> b = float("-inf")>>> ainf>>> b-inf
为了测试这些值的存在,使用 math.isinf()
进行判断:
>>> import math>>> math.isinf(a)True>>> math.isinf(b)True
无穷大数在执行数学计算的时候会传播
这个就类似于数学中讲述的,无穷大加上一个常数还是无穷大,无穷大与无穷大相等:
>>> a = float('inf')>>> a + 45inf>>> a * 10inf>>> 10 / a0.0>>> float("inf") == float("inf")True
无穷大在比较中比任何一个数都要大。
正无穷与负无穷相加的结果是什么
有些操作时未定义的并会返回一个 NaN
结果:
>>> a = float('inf')>>> a/anan>>> b = float('-inf')>>> a + bnan
表示非数字的 NaN
nan
值在所有操作中也会传播,并且不会产生异常:
>>> c = float('nan')>>> c + 23nan>>> c / 2nan>>> c * 2nan>>> math.sqrt(c)nan
使用 math.isnan()
可以判断值是否是 NaN
:
>>> math.isnan(c)True
nan
值的任何比较操作都是返回 False
:
>>> float("nan") == float("nan")False>>> c > 3False
更安全的类型转换
由于无穷的存在,因此字符串装浮点数就存在的一些例外,并且这个转换过程不会抛出异常。如果程序员们想改变 python 的默认行为,可以使用 fpectl
模块,但是它在标准的Python 构建中并没有被启用,它是平台相关的,并且针对的是专家级程序员。这里提供一个比较简单的转换,就是加一个 isdigit()
判断:
def str2float(ss): if not ss.isdigit(): raise ValueError return float(ss)sss = "inf"a = str2float(sss)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。