先放一張圖
計算機內(nèi)部對于浮點數(shù)處理是不夠精確的。
1、浮點數(shù)的二進制表示
整數(shù)部分:用十進制整數(shù)整除以2,得到商和余數(shù),該余數(shù)就是二進制數(shù)的最低位,然后繼續(xù)用商整除以2,得到新的商和余數(shù),以此類推,直到商等于0,由所有余數(shù)倒排組成了該整數(shù)的二進制表現(xiàn)形式。
小數(shù)部分:乘以2,取整數(shù)0或者1,剩下的小數(shù)繼續(xù)乘2一直重復,直到小數(shù)部分為0或達到指定的精度為止
2、存儲規(guī)則
由于Python封裝了C語言的特性,根據(jù)國際IEEE754標準進行存儲。
IEEE754標準包含一組實數(shù)的二進制表示法,由符號位、指數(shù)位、尾數(shù)位組成,各種精度各部分的位數(shù)如下:
3、轉換為IEEE754標準的二進制數(shù)
規(guī)格化
當尾數(shù)不為0時,尾數(shù)域的高有效位為1,這稱為浮點數(shù)的規(guī)格化。否則,以修改階碼同時左右移動小數(shù)點位置的辦法,使其成為規(guī)格化數(shù)的形式。
32位浮點數(shù):,S為符號位(0正1負),M為規(guī)格化后的小數(shù)尾數(shù)
64位浮點數(shù):e=E-1023
移碼
在真值基礎上加2^n(機器字長為n+1),其中2^n>x≥-2^n
舉一個簡單例子:
1.5=[1.1],符號位為0,指數(shù)e=0,規(guī)格化后尾數(shù)為1.1。
尾數(shù)域M右側以0補全,得尾數(shù)域:
M=[100?0000?0000?0000?0000?0000]
階碼E:
E=[0]移?1=[10000000]?1=[01111111]
得1.5的機器碼:
1.5=[0011?1111?1100?0000?0000?0000?0000?0000]
十六進制表示為1.5=0x3fc00000。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
標題名稱:python浮點數(shù)陷阱-創(chuàng)新互聯(lián)
轉載注明:http://chinadenli.net/article30/cepjpo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、營銷型網(wǎng)站建設、網(wǎng)站排名、ChatGPT、微信小程序、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)