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

資訊專欄INFORMATION COLUMN

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

lucas / 1165人閱讀

摘要:為了表示這兩種狀態(tài),便引入和為了表示更多狀態(tài),便增加和的對(duì)數(shù)。浮點(diǎn)數(shù)存儲(chǔ)方式由于計(jì)算機(jī)不識(shí)別十進(jìn)制,所以十進(jìn)制數(shù)據(jù)都要轉(zhuǎn)換為二進(jìn)制保存。

對(duì)于標(biāo)題疑問,2.25-2.2!=0.05,那正確答案是什么呢?

print(2.25-2.2) //0.04999999999999982

事實(shí)證明,的確不等于0.05.那0.04999999999999982是怎么得來的呢?
Google:因?yàn)檎`差
誤差是怎么產(chǎn)生的,為什么整數(shù)就能精確表示,而浮點(diǎn)數(shù)不能精確表示?
Google:因?yàn)檎麛?shù)和浮點(diǎn)數(shù)在計(jì)算機(jī)的存儲(chǔ)方式不同
那浮點(diǎn)數(shù)跟整數(shù)相比,浮點(diǎn)數(shù)在計(jì)算機(jī)如何存儲(chǔ)的呢?
Google:說來話長(zhǎng)......

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

//32bit
00000000000000000000000000000000-11111111111111111111111111111111

2.浮點(diǎn)數(shù)存儲(chǔ)方式
由于計(jì)算機(jī)不識(shí)別十進(jìn)制,所以十進(jìn)制數(shù)據(jù)都要轉(zhuǎn)換為二進(jìn)制保存。并且是以二進(jìn)制的科學(xué)記數(shù)法進(jìn)行保存

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

浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制科學(xué)計(jì)數(shù)法,由三部分組成符號(hào)位,指數(shù)位,尾數(shù)部分

這三部分在計(jì)算機(jī)中是怎么存儲(chǔ)的呢?
以單精度float為例,float根據(jù)IEEE R32.24標(biāo)準(zhǔn)數(shù)據(jù)占32位,每部分存放規(guī)則如下:

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


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

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

2.2呢?
利用十進(jìn)制轉(zhuǎn)二進(jìn)制得:

//2.2小數(shù)本分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...(無限不循環(huán))
=1.00011001100110011001100*2^1(尾數(shù)部分超過23位都被截去了) !=2.2

0(正) 10000000(1+127) 00011001100110011001100

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/41332.html

相關(guān)文章

  • Python學(xué)習(xí)筆記

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

    社區(qū)管理員 評(píng)論0 收藏0
  • 世界這么大,你的那一個(gè)他肯定會(huì)出現(xiàn),Python表白代碼大集合(附上源碼)

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

    JellyBool 評(píng)論0 收藏0
  • python大數(shù)據(jù)可視化制作火山圖實(shí)例

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

    89542767 評(píng)論0 收藏0
  • Golang什么時(shí)候該使用指針

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

    社區(qū)管理員 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lucas

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<