float('inf')表示正無窮
-float('inf')或float('-inf')表示負(fù)無窮
其中,inf均可以寫成Inf
起步
python中整型不用擔(dān)心溢出,因?yàn)閜ython理論上可以表示大的整數(shù),直到把內(nèi)存擠爆。而無窮大在編程中常常需要的。比如,從一組數(shù)字中篩選出最小的數(shù)字。一般使用一個(gè)臨時(shí)變量用于存儲(chǔ)最后結(jié)果,變量去逐個(gè)比較和不斷地更新。而這臨時(shí)變量一般要初始無窮大或者去第一個(gè)元素的值。
正無窮大與負(fù)無窮大
python中并沒有特殊的語法來表示這些值,但是可以通過float()來創(chuàng)建它們:
>>>a=float("inf")
>>>b=float("-inf")
>>>a
inf
>>>b
-inf
為了測(cè)試這些值的存在,使用math.isinf()進(jìn)行判斷:
>>>importmath
>>>math.isinf(a)
True
>>>math.isinf(b)
True
無窮大數(shù)在執(zhí)行數(shù)學(xué)計(jì)算的時(shí)候會(huì)傳播
這個(gè)就類似于數(shù)學(xué)中講述的,無窮大加上一個(gè)常數(shù)還是無窮大,無窮大與無窮大相等:
>>>a=float('inf')
>>>a+45
inf
>>>a*10
inf
>>>10/a
0.0
>>>float("inf")==float("inf")
True
無窮大在比較中比任何一個(gè)數(shù)都要大。
正無窮與負(fù)無窮相加的結(jié)果是什么
有些操作時(shí)未定義的并會(huì)返回一個(gè)NaN結(jié)果:
>>>a=float('inf')
>>>a/a
nan
>>>b=float('-inf')
>>>a+b
nan
表示非數(shù)字的NaN
nan值在所有操作中也會(huì)傳播,并且不會(huì)產(chǎn)生異常:
>>>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
更安全的類型轉(zhuǎn)換
由于無窮的存在,因此字符串裝浮點(diǎn)數(shù)就存在的一些例外,并且這個(gè)轉(zhuǎn)換過程不會(huì)拋出異常。如果程序員們想改變python的默認(rèn)行為,可以使用fpectl模塊,但是它在標(biāo)準(zhǔn)的Python構(gòu)建中并沒有被啟用,它是平臺(tái)相關(guān)的,并且針對(duì)的是專家級(jí)程序員。這里提供一個(gè)比較簡(jiǎn)單的轉(zhuǎn)換,就是加一個(gè)isdigit()判斷:
defstr2float(ss):
ifnotss.isdigit():
raiseValueError
returnfloat(ss)
sss="inf"
a=str2float(sss)
以上內(nèi)容為大家介紹了python培訓(xùn)之如何表示無窮大,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。