2017-05-23 117 views
-2

我可以计算欧式距离int类型吗?欧几里德距离c#

public static int ED(int x1, int x2, int y1, int y2) 
    { 
     int square = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); 
     return square; 
    } 

我想这一点,但如果我添加Math.Sqrt功能,doen't工作。我能做什么 ?

+2

你没有添加它......(在你的例子中) –

+0

我解决了...'int square = Convert.ToInt32(Math.Sqrt((x1 - x2)*(x1 - x2)+(y1 - y2)*(y1 - y2)));'' – Bob

+0

你也可以施放它:'int square =(int)Math.Sqrt((x1 .....'而不是转换它。 –

回答

2

你要输出类型更改为double

//DONE: ED has to return double, not int 
public static double ED(int x1, int x2, int y1, int y2) 
{ 
    return Math.Sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); 
} 

即使坐标都是int,欧氏距离是没有必要的整数值:

x1 = 0 
y1 = 0 
x2 = 1 
y2 = 1 

应该返回sqrt(2) = 1.4142...