无法获得负数的平方根

时间:2013-11-02 21:53:55

标签: java math

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

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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;
}

答案 2 :(得分:1)

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

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

输入= -16。 输出= 4i

答案 3 :(得分:1)

您可以使用此 如果(x <0){ System.out.println(“ num的根” + Math.sqrt(x *(-1))+“ i”);}

答案 4 :(得分:0)

如前所述,没有实数的负平方根。但是有虚构的数字。 GNU Scientific Library可以管理这类问题,例如,功能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。

答案 5 :(得分:0)

这是您的一线客:

由于任何负数的平方根都是正数。 只需将数字乘以平方根下的-1即可,以防万一:

var x = -1;
Math.sqrt(x<0 ? x * -1 : x);