高分悬赏:Java语言不用math库,怎么对一个数字进行开平方,要求精确到0.00001
package com.szs;
public class Main {
public static void main(String[] args) {
//手写二分估值
System.out.println(myCalculate(1.4,1.4,1.5));
//调用函数输出
System.out.println("----------sqrt= "+Math.sqrt(2.0));
}
//根号2约等于 1.414
private static double myCalculate(double ans,double low,double high) {
double mid = 0;
// 二分法,结束条件:差值小于等于1e-10即可
while(high-low>1e-10){
mid = (high+low)/2.0;
System.out.println("-----------mid= "+mid+" mid*mid= "+mid*mid);
//二分,逐步向中间值收拢
if(mid*mid <= 2.0){
low=mid;
}
else{
high=mid;
}
}
return mid;
}
}
采用二分法求解
public class Main {
public static void main(String[] args) {
System.out.println(calSqrt(2.0,0.00001));
System.out.println("sqrt= "+Math.sqrt(2.0));
}
private static double calSqrt(double x, double epsilon) {
double mid =0;
double low=0;
double high=x;
double r =x;
System.out.println("r= "+r);
while(r > epsilon){
mid = low + (high-low)/2;
r = mid*mid -x;
r = r > 0? r: -r;
if(mid*mid < x){
low=mid;
}
else{
high=mid;
}
System.out.println("r= "+r);
}
return mid;
}
}
欢迎关注我的CSDN博客
,您的关注是对我最大鼓励!
牛顿迭代法
了解下
JAva类Math.sqrt