java - 第 n 个根实现

标签 java math nth-root

我正在研究一种计算数字的第 nth 根的方法。但是,我遇到了负数的第 nth 根问题。

大多数人说要使用 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) 返回 -1.41421,但 -2 没有平方根。

最佳答案

(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);
} 

关于java - 第 n 个根实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325793/

相关文章:

python - 如何找到整数n次根?

java - JavaFX WebEngine 中的 Google map 热图错误

java - 如何将数组列表从servlet传递到JSP?

java - 如何在 Spring Boot 中验证 JSON 请求?

java - 使用Selenium按tab然后用java编写

jquery - 在 jQuery 的 .closest() 中使用类名

c++ - 在 C++ 中不使用 cmath 计算 n 次根的有效方法

algorithm - 汉诺塔的替代简单英语算法

java - 超过整数最大值的解决方案?