熱線電話:13121318867

登錄
首頁精彩閱讀Python中的浮點數原理與運算分析
Python中的浮點數原理與運算分析
2018-01-14
收藏

Python中的浮點數原理與運算分析

本文實例講述了Python中的浮點數原理與運算。分享給大家供大家參考,具體如下:

先看一個違反直覺的例子:    
>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999
# 錯誤被累加

再看一個更為普遍,直接影響判斷邏輯的例子:    
>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False
之所以會出現以上的結果,在于 Python (更準確地說是計算機硬件體系結構)對浮點數的表示,我們來看計算機(基于二進制)對十進制小數 0.1 的表示,十進制小數向二進制小數轉換的方法請見 Python十進制小數與二進制小數相互轉換。將十進制小數 0.1 轉換為二進制時的結果為 0.0001100110011001....,無限循環,計算機無法展示無限的結果,只能對結果進行截斷,這是浮點數精度問題的根源。
“==” on floats
基于以上的考慮,當我們進行浮點數的相等比較時,要特別小心,直接使用 == 是有問題的,一種通用的做法即是,不是檢測浮點數是否相等,而是檢測二者是否足夠接近,    
>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon
# 判斷是否小于某一小量

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢