① c語言里單精度和雙精度怎麼理解
單精度和雙精度顧名思義是兩種精度的不同劃分,單精度float是保證7位有效數字,double是保證16位有效數字。
例:(float)(10%3)
結果是1.000000即七位有效數字,(後面不一定全是0,計算機可隨機選擇數字,所以整數1不等於float或double的1)
(double)(10%3)
同理結果是:1.XXXXXXXXXX……後面有十五位的有效數字
雖然整數位都是1,但由於有效位數不同,即後面隨機派出的小數可能不同,所以二者理論上不同,實際比較不能用==,要用fabs()<1e-6.
② C語言雙精度的格式符是%le還是%lf
都可以,只是輸出形式有所不同,%lf是以普通的浮點數的方式輸出,而%le是以科學計數法的形式輸出。
例如:
int main()
{
double n;
scanf("%lf",&n);
printf("浮點數的方式%lf 科學計數法的方式%le",n,n);
return 0;
}
輸入:123.4556666
浮點數的方式123.455667 科學計數法的方式1.234557e+002
(2)c語言雙精度用啥擴展閱讀:
單精度浮點數(float)與雙精度浮點數(double)的區別如下:
1,在內存中佔有的位元組數不同
單精度浮點數在機內佔4個位元組
雙精度浮點數在機內佔8個位元組
2,有效數字位數不同
單精度浮點數有效數字7位
雙精度浮點數有效數字16位
3,所能表示數的范圍不同
單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38
雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308
4,在程序中處理速度不同
一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快。
參考資料來源:網路-雙精度浮點數
③ 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語言什麼是單精度、雙精度
C語言中用float描述單精度,用double描述雙精度。為什麼要把數據分成單雙精度呢?我們生活中通常用到數據時會說精確到小數點後幾位,計算機存儲數據時精確度越高,佔用內存空間越大,根據精確度的需要,如果你選用單精度數據,是說你讓電腦用較少的空間存放數據,表現為精確到小數點後5位,並且第五個小數還是四捨五入得到的,如果你用雙精度定義數據,是說你用較多的空間存放同一個數,表現為小數點後較多的位數,同樣最後一位仍然是四捨五入得到。這就是區分單雙精度的原因。
⑤ c語言中單精度和雙精度是什麼
單精度和雙精度是這對浮點運算來說的,也就是通常說的小數,單精度浮點最少有小數點後6位,雙精度至少是小數點後10位,應為編譯器或者平台不同說以小數點後面多少位是不同的,當是C語音已經規定了小數點後幾位最小的值,最大有多少要看具體的系統來定
⑥ c語言數據類型中「雙精度」「單精度」是什麼意思
1、單精度和雙精度都指浮點數,就是帶小數點的數
2、單精度數的有效位數比較少,7位左右,雙精度的在幾十位。
3、單精度定義是用float
4、雙精度定義是用double
比如:
#include
main(){
float
pi_f
=
m_pi;
double
pi_d
=
m_pi;
printf("%e,",pi_f);
printf("%e",pi_d);
}
⑦ C語言中單雙精度數表示什麼意思
C語言中的單雙精度主要是用在表示小數上...單精度類型是float,雙精度類型是double
,他們表示的是小數的有效數字的多少...單精度的有效數字是7位..因此當小數的超過7位有效數字的時候他表示小數的精確度也不是很高...雙精度的有效數字是14位...比單精度高一倍..因此他表示的精確度也就相對很高
....
在選擇使用單雙精度類型時...就要考慮好小數的長度問題...因為雙精度的精確度雖然高..但相對的,他分配到的內存也會相對較多...對程序的運行也沒有好處