0

我目前正在尝试获得 -1 的平方根,但在 java 中,Math.sqrt() 为任何负值返回 NaN。如何在Java中获得-1的平方根?

4

6 回答 6

4

你不能得到负数的平方根。您可以做的是创建一个复数类,其中包含执行复数算术的方法。您可以在这里查看示例:http: //introcs.cs.princeton.edu/java/97data/Complex.java.html

于 2013-11-02T21:59:01.767 回答
1

这是一种将返回平方根的字符串表示形式的方法:

    static String sqrtImaginaryNum(int i){
    String str ="";
    double sqrtI =  Math.sqrt(Math.abs(i));
    if(i<0){

        return str+=sqrtI+"i";
    }
    return str+=sqrtI;
}
于 2013-11-02T22:38:59.967 回答
1

我知道这是一个老问题,但我有一个更简单的方法,以便下一个人来这里得到帮助。

if(num<0){
    num = -num;
    ans = Math.pow(num, 0.5);
    System.out.println("The result is: " + ans + "i");
}

输入 = -16。输出 = 4i

于 2017-06-02T13:48:51.723 回答
1

你可以使用这个 if(x<0){ System.out.println("root of num "+Math.sqrt(x*(-1))+"i");}

于 2019-07-07T06:56:00.610 回答
0

如前所述,没有实数的负平方根。但是有虚数。GNU 科学库可以处理这类问题,例如函数 gsl_complex_sqrt_real。这个库是用 C/C++ 创建的,但你可以将它移植到 java。

或者你可以试试:http ://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/complex/Complex.html

这是一个使用 Apache Commons 的非常简单的示例:

Complex number = new Complex(-4);
System.out.println("Square root: " + number.sqrt());

结果是:

Square root: (0.0, 2.0)

意思是实部为 0.0,虚部为 2.0。或者只是 -2i 和 2i。

于 2015-11-14T13:22:58.303 回答
0

这是给你的单线:

因为任何负数的平方根都是正数。如果它是负数,只需将数字乘以平方根下的 -1:

var x = -1;
Math.sqrt(x<0 ? x * -1 : x);
于 2019-05-19T10:02:38.410 回答