官术网_书友最值得收藏!

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

主站蜘蛛池模板: 乌鲁木齐市| 会同县| 顺昌县| 鞍山市| 炎陵县| 柯坪县| 广灵县| 哈尔滨市| 宜昌市| 武冈市| 桓台县| 保康县| 庆云县| 高青县| 上虞市| 鸡东县| 永济市| 酒泉市| 禄丰县| 惠来县| 罗田县| 怀化市| 西乌珠穆沁旗| 台安县| 加查县| 固安县| 陕西省| 舒兰市| 平利县| 沂源县| 城步| 宣恩县| 农安县| 砚山县| 阿城市| 合山市| 麦盖提县| 荆州市| 合阳县| 桃园县| 平塘县|