W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
你想創(chuàng)建或測試正無窮、負(fù)無窮或NaN(非數(shù)字)的浮點數(shù)。
Python并沒有特殊的語法來表示這些特殊的浮點值,但是可以使用 float()
來創(chuàng)建它們。比如:
>>> a = float('inf')
>>> b = float('-inf')
>>> c = float('nan')
>>> a
inf
>>> b
-inf
>>> c
nan
>>>
為了測試這些值的存在,使用 math.isinf()
和 math.isnan()
函數(shù)。比如:
>>> math.isinf(a)
True
>>> math.isnan(c)
True
>>>
想了解更多這些特殊浮點值的信息,可以參考IEEE 754規(guī)范。然而,也有一些地方需要你特別注意,特別是跟比較和操作符相關(guān)的時候。
無窮大數(shù)在執(zhí)行數(shù)學(xué)計算的時候會傳播,比如:
>>> a = float('inf')
>>> a + 45
inf
>>> a * 10
inf
>>> 10 / a
0.0
>>>
但是有些操作時未定義的并會返回一個NaN結(jié)果。比如:
>>> a = float('inf')
>>> a/a
nan
>>> b = float('-inf')
>>> a + b
nan
>>>
NaN值會在所有操作中傳播,而不會產(chǎn)生異常。比如:
>>> c = float('nan')
>>> c + 23
nan
>>> c / 2
nan
>>> c * 2
nan
>>> math.sqrt(c)
nan
>>>
NaN值的一個特別的地方時它們之間的比較操作總是返回False。比如:
>>> c = float('nan')
>>> d = float('nan')
>>> c == d
False
>>> c is d
False
>>>
由于這個原因,測試一個NaN值得唯一安全的方法就是使用 math.isnan()
,也就是上面演示的那樣。
有時候程序員想改變Python默認(rèn)行為,在返回?zé)o窮大或NaN結(jié)果的操作中拋出異常。fpectl模塊可以用來改變這種行為,但是它在標(biāo)準(zhǔn)的Python構(gòu)建中并沒有被啟用,它是平臺相關(guān)的,并且針對的是專家級程序員??梢詤⒖荚诰€的Python文檔獲取更多的細(xì)節(jié)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: