在BigDecimal中存储sqrt

时间:2017-04-02 19:27:47

标签: java bigdecimal sqrt

我计算两个数字的欧氏距离,我有这个等式:

 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返回双精度?

1 个答案:

答案 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进行了测试:

  • (x2-x1)= 3,
  • (y2-y1)= 4
  • 输出:5