- 问题描述
计算根号2的值,保留小数点后10位。
- 解决方案1
利用二分查找来做,代码如下:
public static double squareTwo(){
final double frequency = 0.00000000001;
double l = 1.4;
double h = 1.5;
while(h - l > frequency){
double mid = (h + l) / 2.0;
if(mid * mid > 2)
h = mid;
else
l = mid;
}
String s = l + "";
return Double.parseDouble(s.substring(0,12));
}
- 解决方案2
利用牛顿迭代法来做,代码如下:
public static double squareTwo2(){
final double frequency = 0.00000000001;
double result = 1.5d;
double last = 1.6d;
while(last - result > frequency){
last = result;
result = (result + 2.0 / result) / 2;
}
String s = result + "";
return Double.parseDouble(s.substring(0,12));
}