我正在研究一种计算数字的第 n根的方法。但是,我遇到了负数的第 n个根的问题。
大多数人说使用Math.pow(num, 1 / root)
,但这不适用于负数。
我试过这个:
public static double root(double num, double root) {
if (num < 0) {
return -Math.pow(Math.abs(num), (1 / root));
}
return Math.pow(num, 1.0 / root);
}
但是,它不适用于所有数字,因为根可以是小数。例如root(-26, 0.8)
返回-58.71
,但这是一个无效的输入。对于偶数根,这也会给出错误的答案。例如root(-2, 2)
return -1.41421
,但 -2 没有平方根。