W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
上一章我們曾遇到處理非整型數(shù)的問題。我們使用百分?jǐn)?shù)代替小數(shù),避開了這個問題。然而還有一種更通用的解決方案,即使用浮點(diǎn)數(shù),可以同時表示小數(shù)和整數(shù)。C++有兩種浮點(diǎn)類型:float和double,本書僅使用double型。
你可以創(chuàng)建浮點(diǎn)型變量并賦值,語法與使用其它數(shù)據(jù)類型一樣。例如:
double pi;
pi = 3.14159;
聲明變量同時賦值也是合法的:
int x = 1;
string empty = "";
double pi = 3.14159;
實際上這種語法形式很常用。聲明和賦值的組合語法有時也稱為初始化。 浮點(diǎn)數(shù)固然很有用,但也會帶來混淆,因為整型數(shù)和浮點(diǎn)數(shù)之間可能有意義重疊。例如,1這個值,是一個整型數(shù),還是一個浮點(diǎn)數(shù),抑或二者都是? 嚴(yán)格來說,C++區(qū)分整型的1和浮點(diǎn)型的1.0。盡管二者看似同一個數(shù),但屬于不同類型,嚴(yán)格意義上不允許類型間的賦值。下面語句是非法的:
int x = 1.1;
因為賦值運(yùn)算符左邊是整型變量,而右邊是浮點(diǎn)型值。但是由于C++具有自動轉(zhuǎn)換數(shù)據(jù)類型的特性,讓你很容易就忘掉了這一規(guī)則。例如:
double y = 1;
嚴(yán)格來講這也是非法的,但C++允許這么做,它會自動把int類型轉(zhuǎn)換為double類型。這種放寬的限制帶來便利的同時,也帶來了問題,如:
double y = 1 / 3;
你可能以為此表達(dá)式給變量y的值會是一個合法浮點(diǎn)數(shù)0.333333,但實際上y的值卻是0.0。原因是:賦值運(yùn)算符右邊的表達(dá)式實際上是兩個整型值之比,所以C++做的是整型除法,使得此值為0;再轉(zhuǎn)換為浮點(diǎn)數(shù),結(jié)果就是0.0。 解決這個問題(當(dāng)你發(fā)現(xiàn)問題是什么時)的一個方法是把右邊變成一個浮點(diǎn)數(shù)表達(dá)式:
double y = 1.0 / 3.0;
此式給y賦的值是0.333333,這才是期望結(jié)果。 到目前為止我們接觸到的所有運(yùn)算操作——加、減、乘、除——對浮點(diǎn)數(shù)都有效,然而其背后的運(yùn)行機(jī)制是完全不同的,你也許有興趣想了解這一點(diǎn)。實際上,大多數(shù)處理器有特定的硬件來執(zhí)行浮點(diǎn)數(shù)運(yùn)算。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: