C語言float和double之間有什麼不同?
C語言中,float和double都屬於浮點數。區別在於:double所表示的範圍,整數部分範圍大於float,小數部分,精度也高於float
舉個例子:圓周率3.1415926535 這個數字,如果用float來表示,最多只能精確到小數點後面的6位。而double大約能精確到小數點後面的15位左右。具體精確到幾位,跟所用的編譯器有關,但是各個編輯器編譯器之間,也是相差不大的。
至於整數部分,float表示的整數部分的範圍,就已經夠大了,能表示到萬億級別,已經大到沒邊了。而double所表示的整數範圍,大到更沒邊了。
實際開發中,除了個別高精領域,基本上,使用float就足夠了。
我們可以用程序,實際測試一下。如下程序:
_______________________________________________
float num1 = 3.1415926535;
double num2 = 3.1415926535;
printf("num1 = %.10f , num2 = %.10f
" , num1 , num2);
_______________________________________________
上面這幾行程序的運行結果如下圖所示:
上圖中,num1的結果中,只能精確到小數點後面第六位,也就是:3.141592 , 第七位,本來是6,但是上圖中的運行結果,卻是7了。也就是說,float只能精確到小數點後面六位,在往後,數字就不精確了。但是,num2的運行結果,是正確的。這說明:double所能精確到的小數點位數,比float多很多位。
上面的程序,我們驗證了,float所表示的小數的精度,小於double
還有一點需要注意,就是:float和double表示的是,實數。實數不僅僅是小數,還包括:科學計數法。
比如: 3.14乘以10的3次方,結果是:3140,這個結果並不是小數,而是在寫科學計數法的時候,形式上是有小數的。但是這個數字本身是3140,不是小數。
如下面這個程序:
_______________________________________________
float num1 = 3.14E3;
double num2 = 3.14E3;
printf("num1 = %.0f , num2 = %.0f
" , num1 , num2);
_______________________________________________
程序運行結果如下:
上圖中的運行結果,都是3140
所以,我們應該這樣理解:float和double都能表示帶有小數點的數,但是,帶有小數點的數,並不一定是小數,還包括科學計數法。在C語言中,10的N次方,用EN來表示。如3.14乘以10的3次方,可以這樣表示: 3.14E3,字母E可以是大寫,也可以是小寫。
如:這樣的寫法,也是可以的: 3.14e3
希望以上我的回答,能夠幫助到您!
推薦閱讀:
※李楠直播iPhone X開箱是什麼意思?
※Json使用整理 2 - 實戰
※吳健雄——世界物理女王
※談科技:CPU必須要用散熱硅脂嗎?為什麼?
※「奇點計劃」吹響綠石科技進軍人工智慧金融法律領域的號角