试过这样做:
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)
回报-1.41421
,但是-2没有平方根。
发布于 2018-05-21 12:09:24
(num) ^ (1/root)
类似于exp( (1/root) * log(num) )
,这样你就可以像:
public static double root(double num, double root)
{
return Math.pow(Math.E, Math.log(num)/root);
}
https://stackoverflow.com/questions/-100008546
复制相似问题