⑴ c語言中整型,字元型,浮點型,和雙精度浮點型,詳解
整型,計算機中的一個基本的專業術語,指沒有小數部分的數據。整型可以用十進制,十六進制或八進制符號指定,前面可以加上可選的符號(- 或者 +)。包括整型常量和整型變數,整型變數又包括短整型、基本整型、長整型,它們都分為有符號和無符號兩種版本,是一種智能的計算方式。
字元型量包括字元常量和字元變數。字元串常量由一對雙引號括起的字元序列。字元變數的取值是字元常量,即單個字元。字元變數的類型說明符是char。字元變數類型說明的格式和書寫規則都與整型變數相同。
浮點型利用指數使小數點的位置可以根據需要而上下浮動,從而可以靈活地表達更大范圍的實數。
雙精度浮點型,此數據類型與單精度數據類型(float)相似,但精確度比float高,編譯時所佔的內存空間依不同的編譯器而有所不同,是double float數據類型,C/C++中表示實型變數的一種變數類型。
(1)c語言中雙精度浮點型怎麼輸入擴展閱讀
雙精度浮點型類型數值可轉換到其他類型的整數或浮點數,反之亦然。雙精度浮點型常量的最後一個字元可加上「d」或「D」。其存儲格式與浮點型類似,最高位為符號位,次高11位為指數位,其次52位為尾數。
雙精度型就是雙精度浮點型,同數值型比,它能提供更高的數值精度,採用固定存儲長度的浮點數形式,每個雙精度浮點型數據佔8個位元組。與數值型數據不同,它的小數點位置是由輸入的數據值來決定的,並且只能用於表中的欄位。
⑵ 雙精度浮點數怎麼表示
問題一:C語言中用scanf輸入雙精度浮點數 double 輸出需要用 %lf
你這個是相當於把double強制轉換成 float了
float明顯放不下 溢出了 所以出錯
有疑問請追問 滿意記得採納
問題二:什麼是單、雙精度浮點數 浮點就是小數點位置不確定,比如123.43,6557.521.在C語言中,一般單精度數據類型比如int,數據的范圍是2的31次方,而雙精度類型的整型比如long int的數據范圍是2的63次方.所以雙精度和單精度主要的區別在於數據的范圍大小.
通俗的講
雙精度的精度比單精度高
表示的小數點後的位數多
比方說單精度能最小表示到0.01
雙精度就能表示到0.0001
以上只是例子,實際的精度不是這樣,具體到多少記不大清楚了
問題三:C語言中單精度浮點數和雙精度分別如何表示?有什麼差別? 類型 比特數 有效數字 數值范圍 float 32 6-7 -3.4*10(-38)~3.4*10(38) double 64 15-16 -1.7*10(-308)~1.7*10(308) long double128 18-19 -1.2*10(-4932)~1.2*10(4932)簡單來說,Float為單精度,內存中佔4個位元組,有效數位是7位(因為有正負,所以不是8位),在我的電腦且VC++6.0平台中默認顯示是6位有效數字;double為雙精度,佔8個位元組,有效數位是16位,但在我的電腦且VC++6.0平台中默認顯示同樣是6位有效數字(見我的double_float文件)還有,有個例子:在C和C++中,如下賦值語句float a=0.1;編譯器報錯:warning C4305: 'initializing' : truncation from 'const double ' to 'float '原因:在C/C++中(也不知道是不是就在VC++中這樣),上述語句等號右邊0.1,我們以為它是個float,但是編譯器卻把它認為是個double(因為小數默認是double),所以要報這個warning,一般改成0.1f就沒事了。通常的做法,經常使用double,而不喜歡使用float
問題四:C語言如何輸出雙精度浮點型數據 雙精度浮點(長雙精度)型數據用%lf輸出
短整型數據用%u輸出
%d 有符號10進制整數
%i 有符號10進制整數
%o 有符號8進制整數
%u 無符號10進制整數
%x 無符號的16進制數字,並以小寫abcdef表示
%X 無符號的16進制數字,並以大寫ABCDEF表示
%F/f 浮點數
%E/e 用科學表示格式的浮點數
%g 使用%f和%e表示中的總的位數表示最短的來表示浮點數 G 同g格式,但表示為指數
%c 單個字元
%s 字元串
%% 顯示百分號本身
問題五:雙精度浮點數在C語言中是什麼意思? 就是double型啊.單精度浮點數float是32位,double則是64位,位數多,精度當然越大.具體到浮點數結構,你隨便一搜就有了,我要說也頂多是膽網址貼過來.
問題六:雙精度數據的表示範圍,浮點型數據的表示範圍?c語言 float和double的范圍是由指數的位數來決定的。
float的指數位有8位,而double的指數位有11位,分布如下:
float:
1bit(符號位) 8bits(指數位) 23bits(尾數位)
double:
1bit(符號位) 11bits(指數位) 52bits(尾數位)
於是,float的指數范圍為-127~+128,而double的指數范圍為-1023~+1024,並且指數位是按補碼的形式來劃分的。
其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值范圍。
float的范圍為-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范圍為-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
問題七:浮點型數據和雙精度型數據的區別 用4個位元組(32位)來存放一個浮點數,尾數有7個有效數字左右,叫單精度浮點數,用64位來存放,尾數有效數字可以增加到15位或16位,叫雙精度浮點數。記住浮點型數據和雙精度型數據的范圍大小,觸少位的就可以了。用的時候想到就可以
問題八:-1和0的單精度浮點數怎麼表示? 根據IEEE 754的標准,單精度的浮點數表示為:1位符號、8位階碼和23位有效值。
---數值---符號------------有效值----------------------階碼---
0 0 礎 000 0000 0000 0000 0000 0000 0000 0000
-1 1 000 0000 0000 0000 0000 0000 0000 0000
問題九:單雙精度浮點的數值范圍怎麼確定的,詳細點…謝了 float:佔四個位元組,3.4*10(-38)---3.4*10(38);
double:佔八個位元組, 1.7*10(-308)---1.7*10(308);
longdouble型的范圍和double都是八個位元組,范圍相同。 對於單精度浮點數(float)來說,有一位符號位,指數位共8位,尾數共23位。指數能夠表示的指數范圍為-128~127。尾數為23位。當尾數全1時再加上小數點前面的1,指數取到最大正數127(8位,正數最大127,負數最小-128),浮點數取得正數的最大值。 +1.111111111111111111111*2^127(1.後面23個1,由於尾數的范圍1~2,其最高位總為1,故只需存取小數部分,所以小數為是23位1),約等於2*2^127=3.4*10^38。為3.4*10^38負數亦然。 Double的計算與此類似,double的符號位為63位,指數為62~52位,共11位。表示的范圍為-1024~1023。尾數為51~0。表示的范圍為+1.111111111111111111111*2^1023(1.後面52個1)為1.7*10^308。負數亦然。
⑶ C語言中如何用scanf語句輸入一個雙精度數
主要通過scanf格式化輸入語句,主要代碼如下,
double x;//聲明變數
scanf("%lf",&x);//賦值,L/l 長度修飾符,輸入"長"數據,對應double
printf("x=%lf\n",x);//列印輸出
int scanf(const char *format,...);是格式輸入函數,即按用戶指定的格式把數據輸入到指定的變數之中。需要注意的是,針對浮點數scanf()函數中沒有精度控制,像 scanf("%5.4lf",&x); 就是非法的。
⑷ C語言中,要使用雙精度浮點型(double)數據該怎樣寫我用的是WinTC整型要寫int main()和%d
#include <stdio.h>
int main(){
double a,b;
scanf("%lld",&a,&b);
printf("%lld\n",a+b);
return 0;
}
用上面的程序測試一下,如果不行的話,把%lld改成%I64d(這里是大寫的i,前面是小寫的L);
不同的編譯器,用的不一樣。。不過大多數兩種都行。
⑸ C語言 雙精度類型(double)變數的輸入問題
c語言中
單精度型和雙精度型
指兩種
類型
的
浮點數。
單精度型
即
float
型,
有效數字約10進制7位
雙精度型
即
double
型,
有效數字約10進制15位
所以能描述的數值精度不同。
c語言
數據
用
ieee
754
國際標准。float
型
用
4
位元組存放,double
型
用
8
位元組存放。
single
precision
2進制:
數符1位,指數8
位,尾數
23
位
double
precision
2進制:
數符1位,指數11
位,尾數
52
位
單精數值范圍:
±
~10的-44.85次方
到
約
10的38.53次方
雙精度數值范圍
±
~10的-323.3
次方
to
約
10的
308.3次方。
float
a=1.234567;
double
b=1.2345678901234;
-------------
10%3
整除取余數,得
1。
1
用
float
和
double
表示,精度沒有區別。
a=(float)(10%3);
b=(double)(10%3);
強制轉換
要帶
小括弧。
⑹ C語言如何輸入雙精度數據
C語言用scanf()函數輸入雙精度數據時,採用的數據格式參數必須是%lf,如:
doubled;
scanf("%lf",&d);
scanf("%f,%f",&a,&b);不能輸入雙精度數據嗎?
當然不能。主要原因在於double和float類型的大小不同:
double類型數據在內存中存儲佔8位元組(64位),按IEEE754標准存儲,格式為:1位符號位+11位指數位+52位小數位
float類型數據在內存中存儲佔4位元組(32位),按IEEE754標准存儲,格式為:1位符號位+8位指數位+23位小數位
當輸入數據格式串為%f時,scanf()按float類型將輸入的數據存儲到內存地址中,這時,若再按double類型解釋輸出數據時,數據當然不是用戶輸入的內容了。
⑺ C語言如何輸出雙精度浮點型數據
1.雙精度浮點型數據用%lf輸出。因為double是8個位元組的,float是4個位元組的,%f 的格式就是4個位元組的,而 %lf 就是8個位元組的。 例如:printf("%lf ",x);
2.short 佔用內存空間2個位元組,短整型數據用%d輸出 例如:printf("%d ",a);
例:
#include <stdio.h>
int main()
{double x;
short int a;
printf("%lf",x); // 輸入double型
printf("%d",a); //輸入短整型
return 0;
}
(7)c語言中雙精度浮點型怎麼輸入擴展閱讀:
C語言特有特點
1.C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2.C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3.不同的變數類型可以用結構體(struct)組合在一起。
4.只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5.部份的變數類型可以轉換,例如整型和字元型變數。
6.通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7.預編譯處理(preprocessor)讓C語言的編譯更具有彈性。
⑻ C語言如何輸出雙精度浮點型數據
1.雙精度浮點型數據用%lf輸出。因為double是8個位元組的,float是4個位元組的,%f 的格式就是4個位元組的,而 %lf 就是8個位元組的。 例如:printf("%lf ",x);
2.short 佔用內存空間2個位元組,短整型數據用%d輸出 例如:printf("%d ",a);
例:
#include <stdio.h>
int main()
{double x;
short int a;
printf("%lf",x); // 輸入double型
printf("%d",a); //輸入短整型
return 0;
}
(8)c語言中雙精度浮點型怎麼輸入擴展閱讀:
C語言特有特點
1.C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2.C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3.不同的變數類型可以用結構體(struct)組合在一起。
4.只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5.部份的變數類型可以轉換,例如整型和字元型變數。
6.通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7.預編譯處理(preprocessor)讓C語言的編譯更具有彈性。