2012-11-26 55 views
1

爲什麼代碼鑄造整數除法爲雙用C

double slope = (double)changeY/changeZ 

設定斜率爲0.0,在程序中我有,changeX = 20和changeY = 10(兩個整數)時?

+2

你能顯示所有的代碼嗎? – Mysticial

+4

您在上面的示例中使用changeY/* changeZ *而不是* changeX *。你確定這是正確的嗎? –

+2

因爲你做錯了什麼。但是,我們不能確切地告訴你這是什麼,有了這些小小的信息。給出一個最小但完整的代碼示例,我們可以看到「changeX」等的聲明和定義以及「slope」的計算。 –

回答

8

這聽起來像你正在使用錯誤的變量。試試這個:

int changeX = 20; 
int changeY = 10; 

double slope = (double)changeY/changeX; 

演員操作符()具有比/更高的優先級。該表達式將被評估爲:

  • 鑄造changeYdouble
  • changeX隱式轉換爲double。如果一個操作數是double,那麼另一個操作數也會平衡到一個double(這在形式上被稱爲「通常的算術轉換」)。
  • 劃分兩個操作數。結果將是雙倍的。
  • 將此臨時「結果雙」存儲到另一個稱爲斜率的雙精度值中。
+0

+1:不知道爲什麼這會得到一個立即倒票 - 這是我們迄今爲止最接近正確答案的東西? –

+0

注意* slope *更可能是'changeY/changeX'。 –

+0

@PaulR啊,大概吧。謝謝,我會編輯(儘管它與特定問題無關)。 – Lundin

0

如何打印?我曾經做過正確的計算,但我沒有正確打印。要正確打印double,請在printf中嘗試%lf。