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