java 中平方根(sqrt)算法 的实例详解
java中平方根(sqrt)算法
平方根(sqrt,squareroot)是数学中常见的数学的公式;
使用程序进行求平方根主要分为两步:
第一步:while()循环,控制循环次数及小数的位数,防止无限循环和出现多位小数;
第二步:通过分解平方根,使用循环,逐渐减小,接近平方根;
同理,其他方根也可以类似扩展,不过需要注意的是,
偶数次方根需要确保输入正数;
奇数次方根需要转换为正数,确保循环收敛,再进行结果正负判断;
代码如下:
/*
*Algorithms.java
*
*Createdon:2013.12.03
*Author:Wendy
*/
/*eclipsestdkepler,jdk1.7*/
publicclassAlgorithms
{
publicstaticdoublesqrt(doublec)
{
if(c<0)returnDouble.NaN;//NaN:notanumber
doubleerr=1e-15;//极小值
doublet=c;
while(Math.abs(t-c/t)>err*t)//t^2接近c,防止小数
t=(c/t+t)/2.0;
returnt;
}
publicstaticdoublecbrt(doublec)
{
booleanb=(c>0)?true:false;//保存c的符号
c=(c>0)?c:-c;
doubleerr=1e-15;
doublet=c;
while(Math.abs(t*t-c/t)>err*t)
t=(c/(t*t)+t)/2.0;
t=(b)?t:-t;
returnt;
}
publicstaticvoidmain(String[]args)
{
doubler=sqrt(4.0);
System.out.println("sqrt(4.0)="+r);
doublerc=cbrt(-27.0);
System.out.println("cbrt(9.0)="+rc);
}
}
输出:
sqrt(4.0)=2.0 cbrt(9.0)=-3.0
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!