浮點型常量

浮點型常量

浮點型常量有多種寫法。其基本形式是首先寫整數部分(可以帶符號),接著寫小數部分,然後寫 e或者 E,最後再寫一個有符號整數。

寫法


例如:
+1.2E+5
1.5e-9
-5.0e10
其中 e 或 E 被稱為階碼標誌,e 或 E 後面的有符號整數被稱為階碼。階碼代表 10 的階碼次方。例如:+1.2E+5 的值是 是1.2*10^(5)。假設 A 為 e 前面的部分,N 是 e 後面的部分,則 AeN 等於 A * 10N。此外,正號可以省略不寫。小數部分也不是必需的,也就是說,5e3 也是正確的。階碼標誌和階碼也可以不寫,如:13.5。小數點後面,階碼標誌之前的那部分整數可以不寫(9.E5),小數點之前的整數也可以不寫(.96e-8),但是不能同時都不寫。例如:
56.
.5
3.14
3e6
.6E-8
注意:浮點型常量中不能有空格!例如:
3.21e -12
3.14e5
浮點型常量默認是 double 類型的。假設 var_f 是 float 類型的變數,如果有以下語句:
var_f = 9.0 * 3.0;
那麼 9.0 和 3.0 都是 double 類型的常量。它們的乘積也是 double 型的。在進行賦值的時候,這個乘積被轉化成 float 類型,然後再賦值給 var_f。
當然,我們也可以指定浮點型常量的類型。在浮點型常量後面添上 f 或者 F,編譯器就會用 float 類型來處理這個常量。例如:1.5f,2.1e6F。在後面添上 l 或者 L 的話,編譯器會用 long double 類型來處理這個常量。例如:4.1l,50.2E5L。最好用大寫 L,因為小寫 l 容易和數字 1 混淆。

標準規定


對於 float 型,E 後面的階碼的取值範圍至少要達到 -37 到 +37。對 double 和 long double 的規定同樣如此。
C99 新增了一種表示浮點型常量的格式:使用十六進位前綴(0x 或 0X,0 是數字 0,不是字母 o ),用 p或 P 代替前面所說的 e 或 E,而且階碼代表的是 2 的階碼次方。例如:
0xb.1ep9
其中 b 等於十進位中的 11, .1e 等於 1/16 加 14/256, p5 等於 2^9,也就是 512。這個浮點型常量轉換成十進位就是:(11 + 1/16 +14/256)*2^5 = 5692