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