C語言中DOUBLE型資料儲存結果

時間 2021-09-02 02:41:48

1樓:釋夕楊歌

十進位制實數轉化為二進位制,往往不能用有限的位元數精確表示。

double型規定了用幾位元作指數,幾位元代表精度(即有效數字)。這對十進位制實數的儲存精度進一步加了限制。

2樓:朱禮祭君

老譚的書上有:

實型資料一般佔4個位元組(32位)記憶體空間。按指數形式儲存。

實數3.14159在記憶體中的存放形式如下:

+.3141591數符

小數部分

指數其中:

小數部分佔的位(bit)數愈多,數的有效數字愈多,精度愈高。

指數部分佔的位數愈多,則能表示的數值範圍愈大。

基礎加強喲。

3樓:居綠柳喻寅

這是因為,double儲存的資料不存在連續性!

將一個值賦值給一個double型別變數,系統只能給它一個最接近的值.

詳情,可參考double的資料結構:

4樓:陳淑珍邗甲

float與double型別的記憶體分佈,精度和範圍

記憶體分佈:

c/c++的浮點資料型別有float和double兩種。

float大小為4位元組,記憶體中的儲存方式如下:

符號位(1bit)指數(8bit)尾數(23bit)

double大小為8位元組,記憶體中的儲存方式如下:

符號位(1bit)指數(11bit)尾數(52bit)

符號位決定浮點數的正負,0正1負。指數和尾數均從浮點數的二進位制科學計數形式中獲取。

如,十進位制浮點數2.5的二進位制形式為10.1,轉換為科學計數法形式為(1.01)*(10^1)。

由此可知指數為1,尾數(即科學計數法的小數部分)為01。

根據浮點數的儲存標準,指數用移碼錶示。0的float型別移碼為127(0111

1111),0的double型別移碼為1023(011

1111

1111)。運算時,在0

的移碼基礎上加指數,得到的就是記憶體中指數的表示形式。尾數則直接填入,如果空間多餘則以0補齊,如果空間不夠則0舍1入。

所以float和

double型別分別表示的2.5如下(二進位制):

符號位指數尾數0

1000

0000

0100000

0000

0000

0000

0000

0100

0000

0000

0100

0000

0000

0000

0000

0000

0000

0000

0000

0000

0000

0000

0000

精度:float和double的精度是由尾數的位數來決定的。

float:2^23

=8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;

double:2^52

=4503599627370496,一共16位,同理,double的精度為15~16位。

範圍:float類的指數是8位移碼,最大為127最小為-127,127用來作2的指數,為2^127,約等於

1.7014*10^38,

而我們知道,floa示數範圍約為-

3.4*10^38-------3.4*10^38,

這是因為尾數都為1時,即1.11..11約為2,因此浮點數的範圍就出來了.double的情況與float完全相似.

C語言double型資料比較大小出錯

都是同樣的錯誤,double to double 假設這樣就是錯的,因為b是a的指標,而不是a的值 對照程式改一下吧,不懂的繼續追問 if b a i n 2 b 是double型別,a i 會被隱式的轉換成double型別,而,double 型別是不能直接用 比大小的。因為double型別或flo...

C語言中有哪些儲存型別,C語言中變數的儲存型別有哪幾種,儲存方式哪幾種?謝嘍

千鋒教育 c語言中的儲存型別有auto,extern,register,static 這四種,儲存型別說明了該變數要在程序的哪一個段中分配記憶體空間,可以為變數分配記憶體儲存空間的有資料區 bbs區 棧區 堆區。1.auto儲存型別 auto只能用來標識區域性變數的儲存型別,對於區域性變數,auto...

C語言中float與double的區別是什麼

賀金蘭陽靜 float一般用於平常的小數,但double由於有效位數和指數範圍都比效廣所以一般用來表示比較精確的小數或者比較大的數 無法用long來表示的 如 1.121324328947893275973249,幾百億上千億等等 允秋芹敏姬 double的位數是float的2倍,float16位,...