Python中的浮點數(shù)原理與運算分析
本文實例講述了Python中的浮點數(shù)原理與運算。分享給大家供大家參考,具體如下:
先看一個違反直覺的例子:
>>> s = 0. >>> for i in range(10): s += .1 >>> s 0.9999999999999999 # 錯誤被累加
再看一個更為普遍,直接影響判斷邏輯的例子:
>>> from math import sqrt >>> a = sqrt(2) >>> a*a == a False
之所以會出現(xiàn)以上的結(jié)果,在于 Python (更準確地說是計算機硬件體系結(jié)構(gòu))對浮點數(shù)的表示,我們來看計算機(基于二進制)對十進制小數(shù) 0.1 的表示,十進制小數(shù)向二進制小數(shù)轉(zhuǎn)換的方法請見 Python十進制小數(shù)與二進制小數(shù)相互轉(zhuǎn)換。將十進制小數(shù) 0.1 轉(zhuǎn)換為二進制時的結(jié)果為 0.0001100110011001....,無限循環(huán),計算機無法展示無限的結(jié)果,只能對結(jié)果進行截斷,這是浮點數(shù)精度問題的根源。
“==” on floats
基于以上的考慮,當我們進行浮點數(shù)的相等比較時,要特別小心,直接使用 == 是有問題的,一種通用的做法即是,不是檢測浮點數(shù)是否相等,而是檢測二者是否足夠接近,
>>> a = sqrt(2) >>> abs(a*a-2) < epsilon # 判斷是否小于某一小量
更多關于Python相關內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學運算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
Python報錯SyntaxError:unexpected?EOF?while?parsing的解決辦法
在運行或編寫一個程序時常會遇到錯誤異常,這時python會給你一個錯誤提示類名,告訴出現(xiàn)了什么樣的問題,下面這篇文章主要給大家介紹了關于Python報錯SyntaxError:unexpected?EOF?while?parsing的解決辦法,需要的朋友可以參考下2022-07-07使用Flink與Python進行實時數(shù)據(jù)處理的基本步驟
Apache Flink是一個流處理框架,用于實時處理和分析數(shù)據(jù)流,PyFlink是Apache Flink的Python API,它允許用戶使用Python語言來編寫Flink作業(yè),進行實時數(shù)據(jù)處理,以下是如何使用Flink與Python進行實時數(shù)據(jù)處理的基本步驟,需要的朋友可以參考下2024-09-09Python 用turtle實現(xiàn)用正方形畫圓的例子
今天小編就為大家分享一篇Python 用turtle實現(xiàn)用正方形畫圓的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python中小數(shù)點后取2位(四舍五入)及取2位(四舍五不入)的方法
這篇文章主要給大家介紹了python中小數(shù)點后取2位(四舍五入)及取2位(四舍五不入)的方法,在Python中取兩位小數(shù)的方法其實非常簡單,需要的朋友可以參考下2023-08-08python中tkinter窗口位置\坐標\大小等實現(xiàn)示例
這篇文章主要介紹了python中tkinter窗口位置\坐標\大小等實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07