背景
对$-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);
}
- - - 结束 - - -
夜夜爱你哦
#(中枪)