MENU

pow函数负数开立方根

May 3, 2021 • Read: 1473 • 编程之路,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
  • 版权所有:本文版权归 残夜 所有,转载请注明出处!除特殊注明外 (如有侵权,请 点此联系我 )
  • Leave a Comment

    2 Comments
    1. 小黑黑 小黑黑   Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 90.0(Firefox 90.0)

      夜夜爱你哦

      1. 残夜 残夜   Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.198(Google Chrome 86.0.4240.198)

        @小黑黑#(中枪)