2016-12-24 74 views
-2

我有點堅持了這個問題:C++雙斜面等於兩個int師

int a = 5, b = 2; 
double c = a/b; 
cout << c; 

此輸出:

2 

爲什麼?

我可以通過使用通過此:

double aa = a, 
bb = b; 
c = aa/bb; 

此輸出:

2.5 

幫助! :(

+0

提示:C++有不同種類的劃分。在任何給定的上下文中完成的分割類型取決於兩個操作數的類型,在這種情況下爲a和b。 – Waxrat

+0

它輸出2,因爲b是一個整數。數學是作爲一個整數完成,然後轉換爲雙精度。 – drescherjm

回答

2

你必須至少鑄整數之一爲雙:

double c = a/(double)b; 
+1

更好地使用C++風格演繹 – artm

+0

Serge Ballesta已經對C++演員風格做出了迴應。雖然這對於初學者來說看起來更容易,但這是更好的做法。 – Inconnu

3

在C++語言,兩個整數值之間的任何算術運算將返回一個int值。所述不同地,整數除法。 歐幾里德師。而只有這樣,整數值澆鑄爲雙。

如果你想有一個雙操作,你必須強制師雙值進行操作,通過鑄造一個操作數增加一倍,或乘以1.0這是一個雙倍常數:

double c = 1.0 * a/b; 

double c = static_cast<double>(a)/b;