2012-10-30 37 views
1

也許我看不到明顯的事情,但:分割時輸出爲零嗎?

int x1 = 2; 
int y1 = 4; 
int x2 = 11; 
int y2 = 7; 
double res = (y2-y1)/(x2-x1); 
System.out.println(res); 

輸出:

0.0 

爲什麼?

+0

後嘗試'雙RES =(Y2 -y1)/((double)x2-x1);' – irrelephant

回答

1

你需要首先定義這些變量作爲雙打和它應該工作。

+1

您可以將結果轉換爲'double' – doublesharp

+1

@doublesharp轉換結果不夠,但您也可以轉換第一個操作數 –

+0

@JanDvorak這就是我的意思,但沒有。 – doublesharp

7

問題是你在做整數算術。你需要一個類型轉換,以分子或分母轉換爲浮點第一(例如):

int x1 = 2; 
int y1 = 4; 
int x2 = 11; 
int y2 = 7; 
double res = (double)(y2-y1)/(x2-x1); 
System.out.println(res); 

如果你做除法的整數,結果被截斷爲最接近的整數(它產生相同的結果作爲樓層操作)。例如:

0/2 == 0 
1/2 == 0 
2/2 == 1 
3/2 == 1 

0

(y2-y1)/(x2-x1)翻番象下面這樣:

    int x1 = 2; 
      int y1 = 4; 
      int x2 = 11; 
      int y2 = 7; 
      double res = (double)(y2-y1)/(x2-x1); 
      System.out.println(res); 

Output: 0.3333333333333333 
1

嘗試

int x1 = 2; 
int y1 = 4; 
int x2 = 11; 
int y2 = 7; 
double res = (double)(y2-y1)/(x2-x1); 
System.out.println(res); 

你有框它 「而」 做的操作,而不是