Python中的inf与nan

来源:千锋教育
发布时间:2023-11-06 22:33:59
分享

python中可以用如下方式表示正负无穷

>>>float('inf')#正无穷,inf不区分大小写,float('InF')一样可以。

inf

>>>float('-inf')#负无穷,不区分大小写。

-inf

当涉及>和<运算时,所有数都比-inf大,所有数都比+inf小。

>>>float('nan')

nan

nan代表NotANumber(不是一个数),它并不等于0,因为nan不是一个数,所以相关计算都无法得到数字。

正无穷float('inf')

>>>float('inf')+100

inf

>>>float('inf')-100

inf

>>>float('inf')*100

inf

>>>float('inf')/100

inf

>>>float('inf')+float('inf')

inf

>>>float('inf')-float('inf')

nan

>>>float('inf')*float('inf')

inf

>>>float('inf')/float('inf')

nan

>>>100+float('inf')

inf

>>>100-float('inf')

-inf

>>>100*float('inf')

inf

>>>100/float('inf')

0.0

负无穷float('inf')

>>>float('-inf')+100

-inf

>>>float('-inf')-100

-inf

>>>float('-inf')*100

-inf

>>>float('-inf')/100

-inf

>>>float('-inf')+float('-inf')

-inf

>>>float('-inf')-float('-inf')

nan

>>>float('-inf')*float('-inf')

inf

>>>float('-inf')/float('-inf')

nan

>>>100+float('-inf')

-inf

>>>100-float('-inf')

inf

>>>100*float('-inf')

-inf

>>>100/float('-inf')

-0.0

可见,正无穷float('inf')与负无穷float('inf')运算有着异曲同工之妙。

正无穷float('inf')与负无穷float('inf')之间的运算:

>>>float('inf')+float('-inf')

nan

>>>float('inf')-float('-inf')

inf

>>>float('-inf')-float('inf')

-inf

>>>float('inf')*float('-inf')

-inf

>>>float('inf')/float('-inf')

nan

>>>float('-inf')/float('inf')

nan

NaN

所有涉及nan的操作,返回的都是nan。

>>>float('nan')+100

nan

>>>float('nan')-100

nan

>>>float('nan')*100

nan

>>>float('nan')/100

nan

比较操作时,返回的都是False,哪怕两个float('nan')互相比较都不相等。

>>>float('nan')>float('inf')

False

>>>float('nan')>float('-inf')

False

>>>float('nan')

False

>>>float('nan')

False

>>>float('nan')==float('nan')#注意

False

Python中可以用math.isinf()与math.isnan()来判断数据是否为inf或nan。

>>>importmath

>>>math.isinf(float('inf'))

True

>>>math.isinf(float('-inf'))

True

>>>math.isnan(float('nan'))

True

除此之外,还有别的方法可以用来判断数据是否为inf和nan,但上述方法是最推荐的,所以其他方法不再赘述。

正负无穷与NaN的is和==判断

>>>inf=float("inf")

>>>ninf=float("-inf")

>>>nan=float("nan")

>>>infisinf

True

>>>ninfisninf

True

>>>nanisnan

True

>>>inf==inf

True

>>>ninf==ninf

True

>>>nan==nan

False

>>>infisfloat("inf")

False

>>>ninfisfloat("-inf")

False

>>>nanisfloat("nan")

False

>>>inf==float("inf")

True

>>>ninf==float("-inf")

True

>>>nan==float("nan")

False

首先,对于正负无穷和NaN自身与自身用is操作,结果都是True,这里好像没有什么问题;但是如果用==操作,结果却不一样了,NaN这时变成了False。如果分别用float重新定义一个变量来与它们再用is和==比较,结果仍然出人意料。出现这种情况的原因稍稍有些复杂,这里就不赘术了,感兴趣可以查阅相关资料。

既然我在谈论这个问题,就再忠告:不要在Python中试图用is和==来判断一个对象是否是正负无穷或者NaN。乖乖的用math模块就OK了,否则就是引火烧身。

以上内容为大家介绍了Python中的inf与nan,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python虚拟环境工具virtualenv virtualenv是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。安装pipinstallvirtualenv
  • Python基础之循环 循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。for循环for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n
  • python函数的定义 首先,我们要定义一个函数,以说明这个函数的功能。defsquare_sum(a,b):c=a**2+b**2returnc这个函数的功能是求两个数的平方和。首先,def,这个关键字通知python:我
  • Python名称空间规则 名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响。通俗讲:名称空间就是存放名字
  • Python系统互动 系统互动,主要指Python和操作系统(operatesystem)、文件系统(filesystem)的互动。Python可以实现一个操作系统的许多功能。它能够像bash脚本那样管理操作系统,这也是P
  • 网络功能对于Python的意义 现在,网络功能的强弱很大程度上决定了一个语言的成功与否。从Ruby,JavaScript,php身上都可以感受到这一点。Python的标准库对互联网开发的支持并不充分,这也是Django等基于Pyth