C語言浮點類型有效位(float, double,long double)


為什么叫浮點類型:

一個數可以用指數表示,但可以不同小數位多種形式來表示,小數可以浮動。

在 C 語言中,實數是以指數的形式存放在存儲單元的。
一個實數表示為指數可以不止一種形式,
如 4.3242 可以表示為 
4.3242*10^00.43242*10^10.043242*10^2432.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位是精確的后面的數據就未必了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM