double存儲
A. double是什麼數據類型
double是計算機語言的一個類型,即雙精度浮點型。
此數據類型與單精度數據類型(float)相似,但精確度比float高,編譯時所佔的內存空間依不同的編譯器而有所不同,通常情況,單精度浮點數佔4位元組(32位)內存空間,其數值范圍為-3.4E38~3.4E+38。
雙精度型佔8 個位元組(64位)內存空間,其數值范圍為-1.7E308~1.7E+308。聲明double 類型的變數:double puotient。初始化double 類型的變數:puotient = 5.621456873;double puotinet = 5.62。
浮點型數據
1、float型
編譯系統為每一個float型變數分配4個位元組,數值以規范化的二進制數指數形式存放在存儲單元中。
2、double型
為了擴大能表示的數值范圍,用8個位元組存儲一個double型數據,可以得到15位有效數字。
3、long double型
不同的編譯系統對long double型的處理方法不同,Visual C++6.0對long double型和double一樣處理,分配8個位元組。
B. float和double型分別怎麼存儲
C/C++的浮點數據類型有float和double兩種。
類型float大小為4位元組,即32位,內存中的存儲方式如下: 符號位(1 bit) 指數(8 bit) 尾數(23 bit)
類型double大小為8位元組,即64位,內存布局如下: 符號位(1 bit) 指數(11 bit) 尾數(52 bit)
符號位決定浮點數的正負,0正1負。
指數和尾數均從浮點數的二進制科學計數形式中獲取。
如,十進制浮點數2.5的二進制形式為10.1,轉換為科學計數法形式為(1.01)*(10^1),由此可知指數為1,尾數(即科學計數法的小數部分)為01。
根據浮點數的存儲標准(IEEE制定),float類型指數的起始數為127(二進制0111 1111),double類型指數的起始數為1023(二進制011 1111 1111),在此基礎上加指數,得到的就是內存中指數的表示形式。尾數則直接填入,如果空間多餘則以0補齊,如果空間不夠則0舍1入。所以float和double類型分別表示的2.5如下(二進制):
符號位
指數
尾數
0
1000 0000
010 0000 0000 0000 0000 0000
0
100 0000 0000
0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
C. c語言double什麼意思
double在這里是指將變數i和變數s定義為雙精度實型變數。(也就是說:賦給這兩個變數的值將以雙精度實型格式存儲在內存中)
注意事項
1、類型說明符和表達式都必須加括弧(單個變數可以不加括弧),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。
2、無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的數據長度進行的臨時性轉換,而不改變數據說明時對該變數定義的類型。
(3)double存儲擴展閱讀
賦值中的類型轉換
當賦值運算符兩邊的運算對象類型不同時,將要發生類型轉換, 轉換的規則是:把賦值運算符右側表達式的類型轉換為左側變數的類型。具體的轉換如下:
1、浮點型與整型
將浮點數(單雙精度)轉換為整數時,將舍棄浮點數的小數部分, 只保留整數部分。將整型值賦給浮點型變數,數值不變,只將形式改為浮點形式, 即小數點後帶若干個0。注意:賦值時的類型轉換實際上是強制的。
2、單、雙精度浮點型
由於C語言中的浮點值總是用雙精度表示的,所以float 型數據只是在尾部加0延長為double型數據參加運算,然後直接賦值。double型數據轉換為float型時,通過截尾數來實現,截斷前要進行四捨五入操作。
3、char型與int型
int型數值賦給char型變數時,只保留其最低8位,高位部分舍棄。
char型數值賦給int型變數時, 一些編譯程序不管其值大小都作正數處理,而另一些編譯程序在轉換時,若char型數據值大於127,就作為負數處理。
對於使用者來講,如果原來char型數據取正值,轉換後仍為正值;如果原來char型值可正可負,則轉換後也仍然保持原值, 只是數據的內部表示形式有所不同。
D. float和double存儲單位上的差別是什麼
1,單精度,也就是 float ,在 32 位機器上用 4 個位元組來存儲的;而雙精度double是用 8 個位元組來存儲的,這是他們最本質的區別。
2,由於存儲位不同,他們能表示的數值的范圍就不同,也就是能准確表示的數的位數就不同。
3,單精度小數點後面共能精確到7位小數。雙精度可精確到15位小數。
(4)double存儲擴展閱讀:
單精度浮點數用4位元組存儲,雙精度浮點數用8位元組存儲,分為三個部分:符號位、階和尾數。階即指數,尾數即有效小數位數。單精度格式階佔8位,尾數佔24位,符號位1位,雙精度則為11為階,53位尾數和1位符號位。
細心的人會發現,單雙精度各部分所佔位元組數量比實際存儲格式多了一位,的確是這樣,事實是,尾數部分包括了一位隱藏位,允許只存儲23位就可以表示24位尾數,默認的1位是規格化浮點數的第一位,當規格化一個浮點數時,總是調整它使其值大於等於1而小於2,亦即個位總是為1。
階以移碼的形式存儲。對於單精度浮點數,偏移量為127(7FH),而雙精度的偏移量為1023(3FFH)。存儲浮點數的階碼之前,偏移量要先加到階碼上,浮點數有兩個例外。數0.0存儲為全零。無限大數的階碼存儲為全1,尾數部分全零。符號位指示正無窮或者負無窮。
E. C語言中DOUBLE型數據儲存結果
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
010
0000
0000
0000
0000
0000
0
100
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完全相似.
F. c語言中double和float它們存儲時分別占據多大的內存空間
double
中文譯為雙精度浮點數,一般稱雙精度數,它在內存中佔用8個位元組(位、bit)的空間;float
中文譯為單精度浮點數,一般就稱為浮點數,它在內存中佔用4個位元組的空間。