MENU

pow函数负数开立方根

May 3, 2021 • Read: 21 • 编程之路,Java

背景

对$-27$求立方根,即求$(-27)^{\frac 1 3}$

答案应该是$-3$,但程序实际上得出$NaN$无解。

分析

查看Math.pow源码,在java.lang.StrictMath类中找到调用的本地方法pow,然后翻阅上面的注释可以找到这样一句话(翻译),“如果第一个参数是有限数且小于0,第二个参数是有限数且不是整数,则结果返回NaN”

第一个参数$-27$是有限数且小于0,第二个参数是$\frac 1 3$是分数(分数是有限数),不是整数,因此结果返回$NaN$

解决方案

private static double cubeRoot(double a){
    if(a < 0.0)
        return -cubeRoot(-a);
    else
        return Math.pow(a, 1.0/3);
}

- - - 结束 - - -
  • 文章标题:pow函数负数开立方根
  • 文章链接:https://blog.canye365.cn/archives/393.html
  • 版权所有:本文版权归 残夜 所有,转载请注明出处!除特殊注明外 (如有侵权,请 点此联系我 )