3 浮點數的秘密

2021-08-15 22:56:58 字數 1142 閱讀 8243

浮點數在記憶體的儲存方式為:s=m*2^n主要由三部分構成:符號位+指數(n)+尾數(m)

型別符號位

指數尾數

float

1位(第31位)

8位(第23-30位)

23位(第0-22位)

double

1位(第63位)

11位(第52-62位)

52位(第0-51位)

float和double型別的資料在計算機內部的表示法是相同的,但由於所佔儲存空間的不同,其分別能夠表示的數值範圍和精度不同。

浮點數的轉換:

1)將浮點數轉換為二進位制

2)用科學計數法表示二進位制浮點數

3)計算指數偏移後的值

注意:計算指數時需要加上偏移量,而偏移量的值與型別有關

示例:對於指數6,偏移後的值如下:

float: 127 + 6 --> 133

double: 1023 + 6 --> 1029

實數8.25在記憶體中的float表示:

* 8.25的二進位制表示:1000.01 –> 1.00001*(2^3)

符號位:0

指數:127 + 3 –> 130 –> 10000010

小數:00001

* 記憶體中的8.25的float表示:

0 10000010 00001000000000000000000 –> 0x41040000

#include 

int main()

輸出結果:

0x41040000
#include 

int main()

輸出結果:

3.1414999962

123456792.0000000000

總結:

浮點數是不精確,浮點數是不連續的。

c語言整數轉浮點數 浮點數的秘密

我們在學習 c 語言時,通常認為浮點數和小數是等價的,並沒有嚴格區分它們的概念,這也並沒有影響到我們的學習,原因就是浮點數和小數是繫結在一起的,只有小數才使用浮點格式來儲存。其實,整數和小數可以都使用定點格式來儲存,也可以都使用浮點格式來儲存,但實際情況卻是,c 語言使用定點格式儲存整數,使用浮點格...

C語言高階剖析 3 浮點數的秘密

浮點數在記憶體中的儲存方式為 符號位,指數,尾數 型別符號位 指數尾數 float 1位 第31位 8位 第23 30位 23位 第0 22位 double 1位 第63位 11位 第52 62位 52位 第0 51位 float 與 double 型別的資料在計算機內部的表示法是相同的,但由於所佔...

C語言高階 浮點數的秘密03

浮點數在記憶體中的儲存方式為 符號位 指數字 尾數 型別f符號位 指數尾數 float 1位 第31位 8位 第23位 30位 23位 第0 22位 double 1位 第63位 11位 第52位 62位 52位 第0 51位 浮點數的轉換 對於指數6 實數8.25在記憶體中的float表實 8.2...