7
可能我的問題很簡單和愚蠢的。 我想存儲一個分區的值,特別是1/x
,其中x
是一個 的整數值。
int x = 17;
double result = 1/x;
我嘗試這樣做,但我總能得到0.000000 ...
我試着輸入固定在X的值,例如1/17
但總是得到相同的值..有什麼錯?
可能我的問題很簡單和愚蠢的。 我想存儲一個分區的值,特別是1/x
,其中x
是一個 的整數值。
int x = 17;
double result = 1/x;
我嘗試這樣做,但我總能得到0.000000 ...
我試着輸入固定在X的值,例如1/17
但總是得到相同的值..有什麼錯?
你在做整數除法。
嘗試以下,它會按預期工作:
int x = 17;
double result = 1.0/x;
你有上述的表達1
的類型是int
,而x
類型爲int。當你做int/int
時,你會返回一個int。您至少需要其中一種類型的浮點(float
或double
)以便進行浮點除法。與數學不同,C++中的分區可以引用截斷整數除法(你所做的)或浮點除法(我在我的例子中做的)。小心這個!
在我的例子中,我們明確的是double/int -> double
。
或者說清楚:'double result =(double)1/x;' – Nobody 2012-02-26 17:23:20
@Nobody那麼你的意思是'double result = 1.0/x;'?那麼,編譯器會爲你做這件事,但他可能會嘲笑你,因爲你自己不承認雙字面意思。 – 2012-02-26 17:53:40
@Christian Rau它更像是一個教學示例,使自動類型更加醒目。當然作爲一名程序員,我總是會寫'1.0',因爲它更短。 – Nobody 2012-02-26 17:55:38