# 4.C語言實型數據
實型也稱為浮點型。實型常量也稱為實數或者浮點數。在C語言中,實數只采用十進制。它有二種形式:十進制小數形式和指數形式。
1) 十進制數形式
由數碼0~ 9和小數點組成。例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均為合法的實數。
注意,必須有小數點。
2) 指數形式
由十進制數,加階碼標志“e”或“E”以及階碼(只能為整數,可以帶符號)組成。其一般形式為:
? ? a E n(a為十進制數,n為十進制整數)
其值為 a*10n。如:
2.1E5 (等于2.1*105)
3.7E-2 (等于3.7*10-2)
0.5E7 (等于0.5*107)
-2.8E-2 (等于-2.8*10-2)
以下不是合法的實數:
345 (無小數點)
E7 (階碼標志E之前無數字)
-5 (無階碼標志)
53.-E3 (負號位置不對)
2.7E? (無階碼)
標準C允許浮點數使用后綴。后綴為“f”或“F”即表示該數為浮點數。如356f和356.是等價的。
【例3-5】說明了這種情況。
~~~
main(){
printf("%f\n ",356.);
printf("%f\n ",356);
printf("%f\n ",356f);
}
~~~
注意,第4行在Dev C++中會報錯。
## 實型變量
1) 實型數據在內存中的存放形式
實型數據一般占4個字節(32位)內存空間。按指數形式存儲。實數3.14159在內存中的存放形式如下:

說明:
* 小數部分占的位(bit)數愈多,數的有效數字愈多,精度愈高。
* 指數部分占的位數愈多,則能表示的數值范圍愈大。
2) 實型變量的分類
實型變量分為:單精度(float型)、雙精度(double型)和長雙精度(long double型)三類。
在Turbo C中單精度型占4個字節(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型占8 個字節(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。
| 類型說明符 | 比特數(字節數) | 有效數字 | 數的范圍 |
|---|---|---|
| float | 32(4) | 6~7 | 10-37~1038????????? |
| double | 64(8) | 15~16 | 10-307~10308 |
| long double | 128(16) | 18~19 | 10-4931~104932 |
實型變量定義的格式和書寫規則與整型相同。例如:
~~~
float x,y; /* x,y為單精度實型量 */
double a,b,c; /* a,b,c為雙精度實型量*/
~~~
3) 實型數據的舍入誤差
由于實型變量是由有限的存儲單元組成的,因此能提供的有效數字總是有限的。如下例。
【例3-6】實型數據的舍入誤差。
~~~
main(){
float a,b;
a=123456.789e5;
b=a+20;
printf("%f\n",a);
printf("%f\n",b);
}
~~~
注意:1.0/3*3的結果并不等于1。
【例3-7】
~~~
main(){
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("%f\n%f\n",a,b);
}
~~~
從本例可以看出:
* 由于a 是單精度浮點型,有效位數只有七位。而整數已占五位,故小數二位后之后均為無效數字。
* b 是雙精度型,有效位為十六位。但Turbo C 規定小數后最多保留六位,其余部分四舍五入。
## 實型常數的類型
實型常數不分單、雙精度,都按雙精度double型處理。
- 前言
- 一. C語言概述
- 1.C語言的發展及其版本
- 2.C語言工作原理和運行機制
- 3.C語言編譯器(開發工具|IDE)推薦
- 4.C語言的特點
- 5.第一個C語言程序
- 6.C語言輸出函數(printf)和輸入函數(scanf)
- 7.C語言程序的結構特點
- 8.C語言字符集
- 9.C語言詞匯
- 二. C語言算法
- 1.什么是算法|算法的概念
- 2.簡單的C語言算法舉例
- 3.C語言算法的特性
- 4.用流程圖表示算法
- 5.三種基本結構的流程圖
- 6.用N-S流程圖表示算法
- 7.用計算機語言表示算法
- 三. 數據類型和運算符
- 1.C語言的數據類型
- 2.C語言常量與變量
- 3.C語言整型數據
- 4.C語言實型數據
- 5.C語言字符型數據
- 6.C語言變量賦初值
- 7.C語言數據類型轉換
- 8.C語言算術運算符和算術表達式
- 9.C語言賦值運算符和賦值表達式
- 10.C語言逗號運算符和逗號表達式
- 四. 順序程序設計
- 1.C語言語句概述
- 2.C語言賦值語句詳解
- 3.C語言數據的輸入輸出
- 4.C語言字符的輸入輸出
- 7.C語言順序結構程序設計舉例
- 五. 分支結構
- 1.C語言關系運算符和表達式
- 2.C語言邏輯運算符和表達式
- 3.C語言if語句詳解
- 4.C語言switch語句的用法詳解
- 5.C語言條件運算符和條件表達式
- 6.C語言分支結構程序舉例
- 六. 循環控制
- 1.C語言循環控制概述
- 2.C語言goto語句以及用goto語句構成循環
- 3.C語言while語句的用法
- 4.C語言do-while語句的用法
- 5.C語言for語句用法詳解
- 6.C語言幾種循環的比較
- 7.C語言break和continue語句的用法
- 8.C語言循環控制程序舉例
- 七. C語言數組
- 1.C語言一維數組的定義和引用
- 2.C語言二維數組的定義和引用
- 3.C語言字符數組及其應用
- 4.C語言常用字符串處理函數
- 5.C語言數組應用舉例
- 6.C語言數組小結
- 八. C語言函數
- 1.C語言函數概述
- 2.C語言函數的定義
- 3.C語言函數的參數和返回值
- 4.C語言函數的調用
- 5.C語言函數的嵌套調用
- 6.C語言函數的遞歸調用
- 7.C語言數組作為函數參數
- 8.C語言局部變量和全局變量
- 9.C語言變量的存儲類別
- 九. 預處理命令
- 1.C語言預處理概述
- 2.C語言無參數宏定義
- 3.C語言帶參數宏定義
- 4.C語言文件包含命令
- 5.C語言條件編譯詳解
- 6.C語言預處理指令總結
- 十. C語言指針
- 1.C語言指針的概念
- 2.C語言指針變量
- 3.C語言指針變量作為函數參數
- 4.C語言指針變量的運算
- 5.C語言數組指針
- 6.C語言通過指針引用數組
- 7.C語言數組名作函數參數
- 8.C語言指向多維數組的指針
- 9.C語言字符串指針
- 10.C語言字符串指針變量與字符數組的區別
- 11.C語言函數指針變量
- 12.C語言指針型函數
- 13.C語言指針數組的概念
- 14.C語言指向指針的指針
- 15.C語言main函數參數
- 16.關于指針的總結
- 十一. 結構體和共用體
- 1.C語言結構體的定義
- 2.C語言結構類型變量的說明
- 3.C語言結構變量成員的表示方法
- 4.C語言結構變量的賦值
- 5.C語言結構變量的初始化
- 6.C語言結構體數組的定義
- 7.C語言指向結構體變量的指針
- 8.C語言指向結構體數組的指針
- 9.C語言結構體指針變量作函數參數
- 10.C語言動態存儲分配
- 11.C語言鏈表的概念
- 12.C語言枚舉類型
- 13.C語言類型定義符typedef
- 十二. 位運算
- 1.C語言位運算符詳解
- 2.C語言位域(位段)
- 3.關于位運算的總結
- 十三. 文件操作
- 1.C語言文件概述
- 2.C語言文件指針
- 3.C語言文件的打開與關閉
- 4.C語言文件的讀寫
- 5.C語言文件的隨機讀寫
- 6.C語言文件檢測函數
- 7.C語言庫文件(頭文件)有哪些
- 8.文件操作小結