我目前正在尝试获得 -1 的平方根,但在 java 中,Math.sqrt() 为任何负值返回 NaN。如何在Java中获得-1的平方根?
6 回答
你不能得到负数的平方根。您可以做的是创建一个复数类,其中包含执行复数算术的方法。您可以在这里查看示例:http: //introcs.cs.princeton.edu/java/97data/Complex.java.html
这是一种将返回平方根的字符串表示形式的方法:
static String sqrtImaginaryNum(int i){
String str ="";
double sqrtI = Math.sqrt(Math.abs(i));
if(i<0){
return str+=sqrtI+"i";
}
return str+=sqrtI;
}
我知道这是一个老问题,但我有一个更简单的方法,以便下一个人来这里得到帮助。
if(num<0){
num = -num;
ans = Math.pow(num, 0.5);
System.out.println("The result is: " + ans + "i");
}
输入 = -16。输出 = 4i
你可以使用这个 if(x<0){ System.out.println("root of num "+Math.sqrt(x*(-1))+"i");}
如前所述,没有实数的负平方根。但是有虚数。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。
这是给你的单线:
因为任何负数的平方根都是正数。如果它是负数,只需将数字乘以平方根下的 -1:
var x = -1;
Math.sqrt(x<0 ? x * -1 : x);