2012-11-11 86 views
0

可能重複:
Division in C++ not working as expected爲什麼我在這裏得到0而不是0.5?

原來我的計劃已經返回錯誤的結果,所以我決定打破代碼轉換成一小塊一小塊。事實證明,設置斷點後,...

double test3 = ((2 - 1)/2); 

...根據C++編譯器等於0。我不知道爲什麼。有人可以向我解釋嗎?

我使用微軟的Visual Studio高級專業版2012

+1

因爲int/int = int – chris

+0

dividion期間舍入爲int ...只是做double test3 =((2.0 - 1.0))/ 2.0 – relaxxx

回答

5

因爲你正在做的整數除法。 1/20,然後將其轉換爲double,產生0.。如果你想浮點除法,嘗試使分工的參數的浮點數之一:

double test3 = (2.0-1)/2; 
1

因爲你在右手側使用的數字都是整數:(即:表達(2-1)/2計算結果爲0(int)1/(int)2計算結果爲0,因爲整個事情是一個整數

它更改爲:

double test3 = ((2 - 1)/2.0); 

中的表達是那麼(int)1/(double)2,其將評估爲雙倍,因此0.5

1

當只有整數參與表達式時,您將只獲得整數算術。如果你想有浮點算術,你需要在某個點上包含浮點表達式,例如

double test3 = ((2 - 1)/2.0); 
0

嘗試使您的數字加倍,(2.-1。)/ 2。

相關問題