我计算两个数字的欧氏距离,我有这个等式:
import java.lang.*;
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
public static void main(String[] args)
{
double x2 = 0.32061253;
double x1 = 0.25090585;
double y2 = 0.33407547;
double y1 = 0.30716705;
double distance = sqrt(pow(x2 - x1,2) + pow(y2 - y1,2));
System.out.println(distance);
}
当我尝试将其保存在双变量(euclideanDistance)中时,我打印时得到0.0(可能是因为数字有很多小数)。我尝试使用BigDecimal格式保存它,但它似乎不起作用。在这种情况下如何正确使用它,因为sqrt
返回双精度?
答案 0 :(得分:1)
此代码打印出 答案,但不会打印出评论中提供的答案,并且它也不打印“0.0” - JDK 1.8
import java.lang.*;
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
public class Main {
public static void main(String[] args) {
double x2 = 0.32061253;
double x1 = 0.25090585;
double y2 = 0.33407547;
double y1 = 0.30716705;
double distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
System.out.println(distance);
}
}
//result
//0.0747200395042642
还用毕达哥拉斯三重3,4,5进行了测试: