百科狗-知识改变命运!
--

Python中的inf与nan

是丫丫呀1年前 (2023-11-21)阅读数 23#技术干货
文章标签正负

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

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

inf

>>>float('-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

Python中的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')>>float('nan')>>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培训机构:开发教育。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)