實型常量只採用十進制,兩種形式:
由數字 0-9 和小數點組成。合法範例:0.0、.25、5.789、300.、-267.8230。
非法:345(無小數點)。
格式:a E n(a 為十進制數,n 為十進制整數),值為 a × 10ⁿ。
合法:2.1E5、3.7E-2、0.5E7、-2.8E-2。
非法:E7(E 前無數字)、53.-E3(負號位置錯)、2.7E(無指數)。
f / F:明確指定為 float 型(預設為 double)。如 356f 等同 356.| 類型 | 聲明符 | 位元組 | 有效位數 | 數值範圍 |
|---|---|---|---|---|
| 單精度 | float | 4 (32位) | 7 位 | 3.4E-38 ~ 3.4E+38 |
| 雙精度 | double | 8 (64位) | 15-16 位 | 1.7E-308 ~ 1.7E+308 |
注意: 實型常數不分單/雙精度,預設按 double 處理。printf 預設顯示小數點後 6 位。
void main() {
float a; double b;
a = 33333.33333;
b = 33333.33333333333333;
printf("%f\n%f\n", a, b);
}
// 輸出:
// 33333.332031 (float 只有 7 位有效數字,整數部佔 5 位,小數只剩 2 位可信)
// 33333.333333 (double 16 位有效,但 printf 只印 6 位小數)
[Practice] //1
int a=32; float b; double d;
b=12345678; // b=12345678.0 (超出 float 精度,低位不準)
d=b*100; // d=1234567800
d=d+a; // d=1234567832
d=d+58.123456; // d=1234567890.123456
[Practice] //2
int a=543; float b;
b=123.123962+a; // b=666.123962
b=b-100; // b=566.123962
a=b; // a=566 (截斷小數)