cdouble存儲
A. c語言裡面,double和float的儲存位置在同一個地方嗎
變數的存儲位置和該變數類型沒有關系,和該變數的作用域有關。
如果都是局部變數,保存在代碼區(text segment);
如果是全局靜態變數,保存在全局初始化數據區/靜態數據區(initialized data segment/data segment)
B. 怎樣用C語言儲存double的小數位
要取double 變數a後面小數點n位 那麼這樣
double a;
int b,n;
b=a*10^n;
然後把b對10取余,得到小數點後第n位,同時b=b/10;
再把b對10取余,得到小數點後第n-1位。。。。
依次進行就可以得到a小數點後n位了
呵呵!!
C. c語言中double型數據在內存中 佔多少個位元組來存儲
c語言中double(雙精度浮點型)是計算機使用的一種數據類型。double(雙精度浮點型)使用 64 位(8位元組) 來儲存一個浮點數。 它可以表示十進制的15或16位有效數字,其數值范圍為-1.79769313486232E308 到1.79769313486232E308。
(3)cdouble存儲擴展閱讀:
double(雙精度浮點型)數值可轉換到其他類型的整數或浮點數,反之亦然。double(雙精度浮點型)常量的最後一個字元可加上「d」或「D」。其存儲格式與浮點型類似,最高位為符號位,次高11位為指數位,其次52位為尾數。
double(雙精度浮點型)同數值型比,它能提供更高的數值精度,採用固定存儲長度的浮點數形式,與數值型數據不同,它的小數點位置是由輸入的數據值來決定的,並且只能用於表中的欄位。
D. c語言中double是什麼意思
double是C語言的一個關鍵字,代表雙精度浮點型。
E. double在c語言中的意思是什麼
double在這里是指將變數i和變數s定義為雙精度實型變數。也就是說:賦給這兩個變數的值將以雙精度實型格式存儲在內存中。
注意事項
1、類型說明符和表達式都必須加括弧(單個變數可以不加括弧),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。
2、無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的數據長度進行的臨時性轉換,而不改變數據說明時對該變數定義的類型。
數據類型
double(雙精度浮點型)是計算機使用的一種資料型別。比起單精度浮點數(float),double(雙精度浮點數)使用 64 位(8位元組) 來儲存一個浮點數。 它可以表示十進制的15或16位有效數字,負值取值范圍為 -1.7976E+308到 -4.94065645841246544E-324,正值取值范圍為 4.94065645841246544E-324到 1.797693E+308
以上內容參考:網路-double
F. 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完全相似.
G. C語言中float,double等類型,在內存中的結構
從存儲結構和演算法上來講,double和float是一樣的,不一樣的地方僅僅是float是32位的,double是64位的,所以double能存儲更
高的精度。
任何數據在內存中都是以二進制(0或1)順序存儲的,每一個1或0被稱為1位,而在x86CPU上一個位元組是8位。比如一個16位(2
位元組)的short int型變數的值是1000,那麼它的二進製表達就是:00000011 11101000。由於Intel CPU的架構原因,它是按位元組倒
序存儲的,那麼就因該是這樣:11101000 00000011,這就是定點數1000在內存中的結構。
目前C/C++編譯器標准都遵照IEEE制定的浮點數表示法來進行float,double運算。這種結構是一種科學計數法,用符號、指數和
尾數來表示,底數定為2——即把一個浮點數表示為尾數乘以2的指數次方再添上符號。下面是具體的規格:
````````符號位 階碼 尾數 長度
float 1 8 23 32
double 1 11 52 64
臨時數 1 15 64 80
由於通常C編譯器默認浮點數是double型的,下面以double為例:
共計64位,摺合8位元組。由最高到最低位分別是第63、62、61、……、0位:
最高位63位是符號位,1表示該數為負,0正;
62-52位,一共11位是指數位;
51-0位,一共52位是尾數位。
按照IEEE浮點數表示法,下面將把double型浮點數38414.4轉換為十六進制代碼。
把整數部和小數部分開處理:整數部直接化十六進制:960E。小數的處理:
0.4=0.5*0+0.25*1+0.125*1+0.0625*0+……
實際上這永遠算不完!這就是著名的浮點數精度問題。所以直到加上前面的整數部分算夠53位就行了(隱藏位技術:最高位的1
不寫入內存)。
如果你夠耐心,手工算到53位那麼因該是:38414.4(10)=1001011000001110.(2)
科學記數法為:1.001……乘以2的15次方。指數為15!
於是來看階碼,一共11位,可以表示範圍是-1024 ~ 1023。因為指數可以為負,為了便於計算,規定都先加上1023,在這里,
15+1023=1038。二進製表示為:100 00001110
符號位:正—— 0 !
合在一起(尾數二進制最高位的1不要):
01000000 11100010 11000001 11001101 01010101 01010101 01010101 01010101
按位元組倒序存儲的十六進制數就是:
55 55 55 55 CD C1 E2 40
H. c語言 double和float類型是怎樣存儲的
c裡面實數默認是double類型的,所有的float都會被提至double來計算,然後再縮小成float,這樣做是為了減少誤差.
I. c語言的double 和int的區別,%d和%f的區別
int:整型,即我們通常意義下的整數變數,例如1、2、3、4、5等。
double:雙精度實型數,即我們通常意義下的小數,例如1.25、1.37、5.0等。
%d:這是C語言中scanf用於輸入整數的格式,輸入整數的格式是scanf("%d",&a)。
%f:這是C語言中scanf用於輸入小數的格式,輸入整數的格式是scanf("%lf",&a)。
在你的公式C=(F-32)*5/9計算結果應該為雙精度,不能用int來定義變數。如果強制賦型會導致數據丟失:小數部分會丟失,只保留整數部分。
(9)cdouble存儲擴展閱讀
雙精度浮點數(double)是計算機使用的一種數據類型,使用 64 位(8位元組) 來存儲一個浮點數。 它可以表示十進制的15或16位有效數字,其可以表示的數字的絕對值范圍大約是:2.23x10-308~ 1.79x10308。IEEE754為其定製標准。
C/C++編程語言中,int表示整型變數,是一種數據類型,用於定義一個整型變數,在不同編譯環境有不同的大小,不同編譯運行環境大小不同。在32/64位系統中都是32位,范圍為-2147483648~+2147483647,無符號情況下表示為0~4294967295。