Python中的浮點(diǎn)數(shù)原理與運(yùn)算分析
本文實(shí)例講述了Python中的浮點(diǎn)數(shù)原理與運(yùn)算。分享給大家供大家參考,具體如下:
先看一個(gè)違反直覺的例子:
>>> s = 0. >>> for i in range(10): s += .1 >>> s 0.9999999999999999 # 錯(cuò)誤被累加
再看一個(gè)更為普遍,直接影響判斷邏輯的例子:
>>> from math import sqrt >>> a = sqrt(2) >>> a*a == a False
之所以會(huì)出現(xiàn)以上的結(jié)果,在于 Python (更準(zhǔn)確地說是計(jì)算機(jī)硬件體系結(jié)構(gòu))對(duì)浮點(diǎn)數(shù)的表示,我們來看計(jì)算機(jī)(基于二進(jìn)制)對(duì)十進(jìn)制小數(shù) 0.1 的表示,十進(jìn)制小數(shù)向二進(jìn)制小數(shù)轉(zhuǎn)換的方法請(qǐng)見 Python十進(jìn)制小數(shù)與二進(jìn)制小數(shù)相互轉(zhuǎn)換。將十進(jìn)制小數(shù) 0.1 轉(zhuǎn)換為二進(jìn)制時(shí)的結(jié)果為 0.0001100110011001....,無限循環(huán),計(jì)算機(jī)無法展示無限的結(jié)果,只能對(duì)結(jié)果進(jìn)行截?cái)?,這是浮點(diǎn)數(shù)精度問題的根源。
“==” on floats
基于以上的考慮,當(dāng)我們進(jìn)行浮點(diǎn)數(shù)的相等比較時(shí),要特別小心,直接使用 == 是有問題的,一種通用的做法即是,不是檢測(cè)浮點(diǎn)數(shù)是否相等,而是檢測(cè)二者是否足夠接近,
>>> a = sqrt(2) >>> abs(a*a-2) < epsilon # 判斷是否小于某一小量
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python使用cx_Oracle調(diào)用Oracle存儲(chǔ)過程的方法示例
這篇文章主要介紹了Python使用cx_Oracle調(diào)用Oracle存儲(chǔ)過程的方法,結(jié)合具體實(shí)例分析了Python中通過cx_Oracle調(diào)用PL/SQL的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
pyMySQL SQL語(yǔ)句傳參問題,單個(gè)參數(shù)或多個(gè)參數(shù)說明
這篇文章主要介紹了pyMySQL SQL語(yǔ)句傳參問題,單個(gè)參數(shù)或多個(gè)參數(shù)說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python dataframe astype 字段類型轉(zhuǎn)換方法
下面小編就為大家分享一篇python dataframe astype 字段類型轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python跑循環(huán)時(shí)內(nèi)存泄露的解決方法
這篇文章主要介紹了Python跑循環(huán)時(shí)內(nèi)存泄露的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
python人工智能tensorflow函數(shù)tf.assign使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.assign使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python經(jīng)緯度坐標(biāo)轉(zhuǎn)換為距離及角度的實(shí)現(xiàn)
這篇文章主要介紹了Python經(jīng)緯度坐標(biāo)轉(zhuǎn)換為距離及角度的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

