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必須要用散熱硅脂嗎?為什麼?
「奇點計劃」吹響綠石科技進軍人工智慧金融法律領域的號角

TAG:C語言 | 編程語言 | 教育 | 科技 |