聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

十進制數如何轉換為浮點數?十進制數轉換為浮點數的方法

來源:CSDN 時間:2023-03-10 15:04:21

1 浮點數概述


(資料圖)

浮點數是計算機存儲實數的一種方式。它無法存儲任意的十進制實數,部分實數僅能在浮點數定義的精度下近似表示。在計算機中,普遍使用的是IEEE 754標準的浮點數,包括一個32位的單精度浮點數與64位的雙精度浮點數。

浮點數分為三部分,符號位(Sign)、指數位(Exponent)、基數(Mantissa)位。

設符號位為 S ,指數位為E,基數位為 M ,浮點數可以基本表示為:(?1)S×2E×M

以上公式只是對浮點數進行大致的說明。在實際的浮點數中,它所代表的十進制并不是使用直接上述公式計算,對于指數位與基數位在不同標準中有著不同的規定。不要用以上公式進行浮點數的十進制轉換

2 IEEE 754的32位浮點數表示

IEEE 755 標準中,規定了符號位為1位、指數位為8位、基數位為23位。

在IEEE754標準中,除了上述的浮點數的說明外,有幾處不同:

以上說明可能不夠充分,接下來通過講解一個十進制數如何表示成一個近似的浮點數來說明該標準下浮點數表示方法。

3 十進制數轉換為浮點數(IEEE754 32位)

接下來,以實數3.14來做例子,講述如何將十進制數轉換為浮點數。

1. 判斷該數是否在表示范圍內: 2?126<3.14<2127 ,在該范圍內,可以表示。

2. 將整數部分進行二進制轉換:3=11

3. 將小數部分進行近似轉換:

在實數中,存在十進制小數無法使用表示的數。譬如 1/3、1/7。這是因為十進制小數只能表示能轉換為10的次方為分母的分數。(譬如 1/5 可以表示為十進制小數,因為它能轉換為2/10,1/25同理,因為它可轉換為4/100)

二進制小數則比十進制小數能表示的分數更少,因為其僅能表示能轉換為以2的次方為分母的分數。因此,十進制小數不能一一對應一個二進制小數。

綜上所述,十進制小數僅能通過一個近似的二進制小數表示。其方法如下:

以上步驟要重復進行多次來取得多位小數。但只能使整個基數部分保留24位。解決該問題可以如下操作:

如果在計算中出現了循環小數或是已經為0的情況,二進制小數計算可以提前停止。

注意到,在整個轉換浮點數的第一步已經判斷了浮點數的范圍,無需考慮十分小的小數無法表示,而近似為0的情況。

通過上述操作,0.14的二進制表示為:0.0010010000111001010110

4. 實數二進制轉換:

3.14的二進制表示為:11.0010010000111001010110

5. 實數規格化:

基數需要從二進制數的第一個1開始表示,3.14的規格化表示為:1.10010010000111001010110×21。

6. 指數位計算

3.14規格化后的指數為1,但根據IEEE標準,實際指數位需要在規格化表示的指數上加上127,則指數位為: 127+1=128=10000000

7. 基數位表示

根據IEEE標準,基數位僅表示1.XXXXX后的.XXXXX部分,則3.14的浮點數的基數位為:10010010000111001010110

8. 結果

結合得到的指數位和基數位,再加上符號位0(如果是負數則為1),3.14的完整32位浮點數表示為:0 10000000 10010010000111001010110

4 浮點數轉換為十進制數(IEEE754 32位)

根據上述過程,我們不難得出浮點數的十進制表示公式:

設符號位為 S ,指數位為E,基數位為 M ,則32位浮點數代表的十進制數計算公式為:

5 浮點數表示的不準確性

從十進制轉換為浮點數的過程中,我們可以看出使用浮點數來表示一個實數時存在的誤差在兩個地方產生:

十進制小數的二進制轉換,許多十進制小數部分只能近似轉換成二進制小數?;鶖滴粩迪拗?,即使十進制數存在一個精確的二進制數,由于浮點數的位數限制,只能保留固定位數的有效數字。

因此,在編程中使用浮點數實際上并不準確。即使浮點數的加減乘除計算是準確的,浮點數本身不準確,其結果也不會準確。如果要進行精確計算,使用整型才是最佳選擇。

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线