可能重複:
Division in C++ not working as expected爲什麼我在這裏得到0而不是0.5?
原來我的計劃已經返回錯誤的結果,所以我決定打破代碼轉換成一小塊一小塊。事實證明,設置斷點後,...
double test3 = ((2 - 1)/2);
...根據C++編譯器等於0。我不知道爲什麼。有人可以向我解釋嗎?
我使用微軟的Visual Studio高級專業版2012
可能重複:
Division in C++ not working as expected爲什麼我在這裏得到0而不是0.5?
原來我的計劃已經返回錯誤的結果,所以我決定打破代碼轉換成一小塊一小塊。事實證明,設置斷點後,...
double test3 = ((2 - 1)/2);
...根據C++編譯器等於0。我不知道爲什麼。有人可以向我解釋嗎?
我使用微軟的Visual Studio高級專業版2012
因爲你正在做的整數除法。 1/2
是0
,然後將其轉換爲double
,產生0.
。如果你想浮點除法,嘗試使分工的參數的浮點數之一:
double test3 = (2.0-1)/2;
因爲你在右手側使用的數字都是整數:(即:表達(2-1)/2
計算結果爲0
爲(int)1/(int)2
計算結果爲0
,因爲整個事情是一個整數
它更改爲:
double test3 = ((2 - 1)/2.0);
中的表達是那麼(int)1/(double)2
,其將評估爲雙倍,因此0.5
當只有整數參與表達式時,您將只獲得整數算術。如果你想有浮點算術,你需要在某個點上包含浮點表達式,例如
double test3 = ((2 - 1)/2.0);
嘗試使您的數字加倍,(2.-1。)/ 2。
因爲int/int = int – chris
dividion期間舍入爲int ...只是做double test3 =((2.0 - 1.0))/ 2.0 – relaxxx