2012-02-26 58 views
7

可能重複:
C programming division整數除法總是零

可能我的問題很簡單和愚蠢的。 我想存儲一個分區的值,特別是1/x,其中x是一個 的整數值。

int x = 17; 
double result = 1/x; 

我嘗試這樣做,但我總能得到0.000000 ...我試着輸入固定在X的值,例如1/17但總是得到相同的值..有什麼錯?

回答

25

你在做整數除法。

嘗試以下,它會按預期工作:

int x = 17; 
double result = 1.0/x; 

你有上述的表達1的類型是int,而x類型爲int。當你做int/int時,你會返回一個int。您至少需要其中一種類型的浮點(floatdouble)以便進行浮點除法。與數學不同,C++中的分區可以引用截斷整數除法(你所做的)或浮點除法(我在我的例子中做的)。小心這個!

在我的例子中,我們明確的是double/int -> double

+3

或者說清楚:'double result =(double)1/x;' – Nobody 2012-02-26 17:23:20

+1

@Nobody那麼你的意思是'double result = 1.0/x;'?那麼,編譯器會爲你做這件事,但他可能會嘲笑你,因爲你自己不承認雙字面意思。 – 2012-02-26 17:53:40

+1

@Christian Rau它更像是一個教學示例,使自動類型更加醒目。當然作爲一名程序員,我總是會寫'1.0',因爲它更短。 – Nobody 2012-02-26 17:55:38