《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN
生活随笔
收集整理的這篇文章主要介紹了
《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
無窮大與 NaN
問題
你想創建或測試正無窮、負無窮或 NaN(非數字) 的浮點數。
解法
Python 并沒有特殊的語法來表示這些特殊的浮點值,但是可以使用 float() 來創建它們。比如:
>>> a = float('inf') >>> b = float('-inf') >>> c = float('nan') >>> a inf >>> b -inf >>> c nan >>>為了測試這些值的存在,使用 math.isinf() 和 math.isnan() 函數。比如:
>>> math.isinf(a) True >>> math.isnan(c) True >>>討論
想了解更多這些特殊浮點值的信息,可以參考 IEEE 754 規范。然而,也有一些地方需要你特別注意,特別是跟比較和操作符相關的時候。
無窮大數在執行數學計算的時候會傳播,比如:
>>> a = float('inf') >>> a + 45 inf >>> a * 10 inf >>> 10 / a 0.0 >>>但是有些操作時未定義的并會返回一個 NaN 結果。比如:
>>> a = float('inf') >>> a/a nan >>> b = float('-inf') >>> a + b nan >>>NaN 值會在所有操作中傳播,而不會產生異常。比如:
>>> 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 默認行為,在返回無窮大或 NaN 結果的操作中拋出異常。 fpectl 模塊可以用來改變這種行為,但是它在標準的 Python 構建中并沒有被
啟用,它是平臺相關的,并且針對的是專家級程序員。
總結
以上是生活随笔為你收集整理的《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Github(1)-概览,初始化仓库
- 下一篇: 算法(6)-leetcode-explo