我目前正试图获得-1的平方根,但在java中,Math.sqrt()返回任何负值的NaN。如何在Java中获得-1的平方根?
答案 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);