為什么叫浮點類型:
一個數可以用指數表示,但可以不同小數位多種形式來表示,小數可以浮動。
在 C 語言中,實數是以指數的形式存放在存儲單元的。 一個實數表示為指數可以不止一種形式, 如 4.3242 可以表示為 4.3242*10^0,0.43242*10^1,0.043242*10^2, 432.42*10^-2 等, 他們代表同一個值。 可以看到小數點的位置是可以在 43242 幾個數字之間浮動的, 只要在小數點位置浮動的同時改變指數的值, 就可以保證它的值不會改變。由於小數點的位置可以浮動, 所以實數的指數形式稱為浮點數。
規范化寫法:小數點前面為0
規范化的指數形式: 在指數形式的多種表示方式中把小數部分中小數點前的數字為 0, 小數點后第 1 位數字不為 0 的表示形式稱為規范化的指數形式, 如 0.43242*10^1 就是 4.3242 的規范化的指數形式。 一個實數只有一個規范化的指數形式。
浮點數類型包括
float(單精度浮點型)、double(雙精度浮點型)、long double(長雙精度浮點型)。
在存儲時,系統將實型數據分成小數部分和指數部分兩個部分、分別存儲。
如 3.14159 在內存中的存放形式如下:
0.314159 101
算6個有效位
這個決定了精度:
float:有效位6-7位 double:15-16 long double:18-19 當要表示一個精確的數字時候非常重要 否則可能丟失精度。
例子:
float a = 123456789; float b = 1234567890; float c = 12345678900; printf("\n%f\n",a); printf("\n%f\n",b); printf("\n%f\n",c); 輸出: 123456792.000000 1234567936.000000 12345678848.000000 只有前面7位是精確的后面的數據就未必了。