- 程序設(shè)計(jì)基礎(chǔ)教程:C語言
- 常東超 劉培勝 郭來德等編著
- 1077字
- 2020-05-07 11:49:29
2.3 實(shí)型常量與變量
2.3.1 實(shí)型常量
實(shí)型常量又稱為實(shí)數(shù)或浮點(diǎn)數(shù),一般用小數(shù)形式和指數(shù)形式來表示。實(shí)型常量分為以下兩種形式:
(1)小數(shù)形式
由數(shù)字、小數(shù)點(diǎn)以及正負(fù)號(hào)組成,如1.23、-23.46、0.0、.234、223.等都是合法的實(shí)數(shù)。
(2)指數(shù)形式
在C語言中,用“e”或“E”后跟一個(gè)整數(shù)來表示以10為底的冪。如1.23e-2、345E+3、3.5e2等都是合法的指數(shù)形式,而e2、1.3E2.5、e、2e 、3.6 e-2等都是不合法的指數(shù)形式。
使用指數(shù)形式要注意以下兩個(gè)方面:
①“e”或 “E”前后必須有數(shù),并且“e”或 “E”的后面必須是整數(shù)。
②“e”或 “E”與其前后的數(shù)字之間不允許有空格存在。
2.3.2 實(shí)型變量
實(shí)型數(shù)據(jù)與整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式不同,實(shí)型數(shù)據(jù)是按指數(shù)形式存放的,系統(tǒng)把一個(gè)實(shí)數(shù)分成小數(shù)和指數(shù)兩個(gè)部分存放,指數(shù)部分采用規(guī)范化的指數(shù)形式,如-12.3456在內(nèi)存中的存放形式如圖2.3所示。

圖2.3 實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式
①小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。
②指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。
(1)實(shí)型變量的分類
實(shí)型變量分為以下三種類型:
①單精度浮點(diǎn)型:以float表示,在內(nèi)存中占4個(gè)字節(jié)。
②雙精度浮點(diǎn)型:以double表示,在內(nèi)存中占8個(gè)字節(jié)。
③更高精度浮點(diǎn)型:以long double表示,在內(nèi)存中占16個(gè)字節(jié)。表2.2列出了在VC++環(huán)境下各類實(shí)型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。
表2.2 在VC++中定義的實(shí)型變量所占的內(nèi)存字節(jié)數(shù)和數(shù)的范圍

實(shí)型變量的存儲(chǔ)單元是有限的,因此提供的有效數(shù)字是有限的,單精度實(shí)數(shù)只能保證7位有效數(shù)字,雙精度實(shí)數(shù)只能保證15位有效數(shù)字,在有效位以外的數(shù)字是沒有意義的,因此會(huì)產(chǎn)生一些誤差。
例如:一個(gè)單精度型變量a等于12345.678,其有效數(shù)值是12345.67。
由于實(shí)數(shù)存在舍入誤差,在使用時(shí)應(yīng)注意:
①根據(jù)實(shí)際需要來選擇單精度或雙精度。
②避免用一個(gè)實(shí)數(shù)來準(zhǔn)確表示一個(gè)大整數(shù)。
③由于實(shí)數(shù)在存儲(chǔ)時(shí)會(huì)有一些誤差,因此實(shí)數(shù)一般不能直接進(jìn)行“相等”判斷,而是進(jìn)行“接近”或“近似”判斷。
④由于在Turbo C或VC++環(huán)境下進(jìn)行實(shí)數(shù)輸出時(shí)限制了小數(shù)點(diǎn)后最多保留6位,因此在進(jìn)行輸出時(shí)有效數(shù)值范圍內(nèi)的其余部分要進(jìn)行四舍五入。
⑤實(shí)型常數(shù)不分單、雙精度,都按雙精度double型處理。
(2)實(shí)型變量的定義
變量定義的一般形式為:
變量的存儲(chǔ)類別 變量的類型名,變量名的標(biāo)識(shí)符,…;
例如:
float a,b,c; /*定義三個(gè)單精度型變量*/
double x,y; /*定義兩個(gè)雙精度型變量*/
【例2.2】 實(shí)型變量的定義與使用。
#include<stdio.h>
void main()
{ float x,y; /*定義兩個(gè)單精度型變量*/
double z; /*定義一個(gè)雙精度型變量*/
x=12345.678; /*變量x的值為12345.678*/
y=12345.673; /*變量y的值為12345.673*/
z=12345.33333378999; /*變量z的值為12345.33333378999*/
printf("x=%f\ny=%f\nz=%lf\n",x,y,z); /*輸出x,y,z的值*/
}
運(yùn)行結(jié)果:
x=12345.677734
y=12345.672852
z=12345.333334
- 認(rèn)識(shí)編程:以Python語言講透編程的本質(zhì)
- Hands-On C++ Game Animation Programming
- Extending Puppet(Second Edition)
- 微服務(wù)架構(gòu)深度解析:原理、實(shí)踐與進(jìn)階
- INSTANT Adobe Edge Inspect Starter
- Quantum Computing and Blockchain in Business
- Angular Design Patterns
- Instant Automapper
- R語言數(shù)據(jù)挖掘:實(shí)用項(xiàng)目解析
- 人人都能開發(fā)RPA機(jī)器人:UiPath從入門到實(shí)戰(zhàn)
- ArcPy and ArcGIS(Second Edition)
- Java面試一戰(zhàn)到底(基礎(chǔ)卷)
- Developer,Advocate!
- Visual FoxPro數(shù)據(jù)庫程序設(shè)計(jì)
- R語言編程基礎(chǔ)