c語言雙精度
① c語言中什麼是單精度型和雙精度型各舉個例子。。。
單精度型和雙精度型的區別在於它們的精確程度不一樣,也就是小數部分的有效位數不一樣。
單精度數(float型)在32位計算機中存儲佔用4位元組,也就是32位,有效位數為7位,小數點後6位;雙精度數(double型)在32位計算機中存儲佔用8位元組,也就是64位,有效位數為16位,小數點後15位。
比如3.1415926535897932384這個小數,如果定義成float型,那麼只會留下小數點後5位,也就是3.141592,如果定義成double型,那麼只會留下小數點後15位,也就是3.141592653589793。
(1)c語言雙精度擴展閱讀
計算機的數都是以二進制進行存儲。無論是單精度浮點數還是雙精度浮點數,在計算機上的存儲都遵循IEEE 754規范,使用二進制科學計數法。
二進制科學計數法包含三個部分:符號位,指數位和尾數部分。單精度數的符號位,指數位和尾數部分分別為1,8,23,而雙精度為1,11,52。
而單雙精度中的精度就主要取決於尾數部分的位數。float的尾數尾數為23位,除去全部為0的情況以外,最小為2的-23次方,因此float小數部分只能精確到後面6位。類似的,double尾數位數為52,最小為2的-52次方,因此只能精確到小數點後15位。
② C語言中單精度,雙精度,長雙精度分別是什麼意思
國際標准浮點格式,位元組越長精度越高:
單精度浮點(float):4個位元組長
雙精度浮點(dloube):8個位元組長,
長雙精度(long double):10個位元組長。
根據你C/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;
}
(3)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語言中單精度與雙精度的區別。
其實就是有效位數不一樣。
浮點型變數分為單精度(float)、雙精度(double)和長雙精度(long double)3類。在Turbo C 中:
比特(位)數 有效數字
float 32 6-7
double 64 15-16
long double 128 18-19
ANSI C 並未具體規定每種類型數據的長度、精度、數值范圍,有的系統將double所增加的32位全用於存放小數部分,這樣可以增加數值的有效范圍,減少舍入誤差。有的系統則將所增加的位(bit)一部分存放指數部分,這樣可以擴大數值范圍
單精度實型 float 佔4個位元組
能保證6位有效數字,取值范圍為-3.4*10的-38次方至3.4*10的38次方。
雙精度實型 double 佔8個位元組
能保證15位有效數字,取值范圍為-1.7*10的-308次方至1.7*10的308次方
⑤ c語言雙精度變數
#include
"stdio.h"
void
main()
{double
a=8.5,
b=2.65;
//這里不應該有逗號
printf("%lf,%lf\n",a,b);//這里沒有定義輸出的字元
}
聲明變數的時候不能有逗號,在printf中把輸出的東西顯出來,就跟上面一樣
我給你注釋了。希望你能明白。如果不明白加我網路HI
⑥ 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 double 128 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文件)
數據在32 6-7 -3.4*10(-38)~3.4*10(38) 用單精度
數據超出32 6-7 -3.4*10(-38)~3.4*10(38)用雙精度
⑦ C語言的雙精度問題
對於浮點數字面值常量,無特殊說明默認為雙精度,如:1.23
也可以顯式地在後面加上一個D來表示這是一個雙精度數,即1.23D
如果要表示單精度常量,需要顯式地在後面加上一個F,即1.23F。
⑧ c語言 雙精度浮點
雙精度浮點的輸出格式通配符就是%f,和普通浮點數是一樣的,如果輸出的數字較大,則用%lf,lf是表示長浮點數。
⑨ 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類型解釋輸出數據時,數據當然不是用戶輸入的內容了。