国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python疑問2:2.25-2.2!=0.05?

lucas / 1156人閱讀

摘要:為了表示這兩種狀態,便引入和為了表示更多狀態,便增加和的對數。浮點數存儲方式由于計算機不識別十進制,所以十進制數據都要轉換為二進制保存。

對于標題疑問,2.25-2.2!=0.05,那正確答案是什么呢?

print(2.25-2.2) //0.04999999999999982

事實證明,的確不等于0.05.那0.04999999999999982是怎么得來的呢?
Google:因為誤差
誤差是怎么產生的,為什么整數就能精確表示,而浮點數不能精確表示?
Google:因為整數和浮點數在計算機的存儲方式不同
那浮點數跟整數相比,浮點數在計算機如何存儲的呢?
Google:說來話長......

1.計算機的本質
追根究底,計算機工作的實質便是電壓的高低切換,像電燈,高電位,電燈亮,低電位,電燈滅。為了表示這兩種狀態,便引入0和1.為了表示更多狀態,便增加0和1的對數。32bit和64bit的計算機就是這樣來的,代表了計算機內存存放待處理數據的大小。32bit的計算機內存大概在4G左右,64bit更多。

//32bit
00000000000000000000000000000000-11111111111111111111111111111111

2.浮點數存儲方式
由于計算機不識別十進制,所以十進制數據都要轉換為二進制保存。并且是以二進制的科學記數法進行保存

2.25 = 10.01(二進制) = 1.001*2^1(二進制科學計數法)
// 2.25整數部分轉換:2=10(除2取余法)
// 小數部分轉換過程:0.25*2 = 0.5 取整數部分0 (乘2取整法)
//                  0.5*2 = 1 取整數部分1
// 故小數部分0.25 = .01

浮點數轉換為二進制科學計數法,由三部分組成符號位,指數位,尾數部分

這三部分在計算機中是怎么存儲的呢?
以單精度float為例,float根據IEEE R32.24標準數據占32位,每部分存放規則如下:

說明:1.對于符號位,若值為正,則為0,若值為負,則為1
2.對于指數位,由于指數存在正指數和負指數,占一位,其余7位表示值的大小,故范圍為-127~128.指數位采用移位存儲方式,即元指數+127(00000000=>-127)~(11111111=>128)
3.對于尾數部分,由于第一位恒為1,所以實際表示并未考慮第一位,所以有效位為24位


那么2.25(即1.001*2^1)在計算機中存儲方式為:

0(正) 10000000(1+127) 00100000000000000000000(.001)

2.2呢?
利用十進制轉二進制得:

//2.2小數本分0.2采用乘2取整法過程:
//0.2*2=0.4    0
//0.4*2=0.8    0
//0.8*2=1.6    1
//0.6*2=1.2    1
//0.2*2=0.4    0
//......
//不可能乘2恰好得到1.0
2.2=10.00110011001100110011001100110011001100110011001101...(無限不循環)
=1.00011001100110011001100*2^1(尾數部分超過23位都被截去了) !=2.2

0(正) 10000000(1+127) 00011001100110011001100

可見,2.2的小數部分通過乘二取整法,永遠無法恰好達到1,所以二進制尾數部分成無限不循環,超過23位的數據會直接被丟棄,導致與原十進制數據不相等。這也就是誤差產生的根源。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41332.html

相關文章

  • Python學習筆記

    入坑 Python自從進入公司,到現在也有半年的時間。這半年的時間從 python 到入門到開發了幾個小項目,類型涵蓋了web應用 程序、爬蟲程序 (scrapy),python腳本工具,自動化工具。對 python 語言也越來越熟悉,當然也有所感悟和總結。首先 Python 真的讓語言成 了一個工具,入門代價很小,上手能夠開發出小工具,可以更快體驗到編程的樂趣。但是做到pythonic需要更多的...

    社區管理員 評論0 收藏0
  • 世界這么大,你的那一個他肯定會出現,Python表白代碼大集合(附上源碼)

    摘要:本文將利用畫多種不同的表白圖,附上源碼,表白代碼看這一篇文章就夠啦,總有你喜歡的,喜歡的話別忘記三連了。 本文將利用Python畫多種不同的表白圖,附上源碼,表白代...

    JellyBool 評論0 收藏0
  • python大數據可視化制作火山圖實例

      本文關鍵給大家介紹了python大數據可視化制作火山圖實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪  導進控制模塊  importnumpyasnp   importpandasaspd  1.載入測試報告  data=pd.read_csv(r'E:ZYHR.projectrna-seqlianxi1exon_leveldf.csv...

    89542767 評論0 收藏0
  • Golang什么時候該使用指針

    Golang 什么時候使用指針(Pointer)?什么時候使用值(Value)?對于go開發者來說是一件頭疼的事情, 而且這個問題似乎沒有絕對的答案,那是否代表我們可以隨意使用呢?答案當然是否定的。本文我將試圖總結什么場景使用指針更合理。 在開始閱讀前,建議讀者先能夠清晰理解 Golang 指針、類型和值等概念。本文并不是標準更不是唯一答案,而是自己根據使用經驗和社區的一些討論而總結的實踐有下幾種...

    社區管理員 評論0 收藏0

發表評論

0條評論

lucas

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<