题目描述
•计算一个数字的立方根,不使用库函数
详细描述:
•接口说明
原型:
public static double getCubeRoot(double input)
输入:double 待求解参数
返回值:double 输入参数的立方根,保留一位小数
解题思路:
二分查找方法求出适合的值,(max-min)>0.001,这个精度需要定的尽量大一些
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
double num=sc.nextDouble();
System.out.println(String.format("%.1f",getCubeRoot(num)));
}
public static double getCubeRoot(double input){
double min=0;
double max=input;
double mid=0;
while ((max-min)>0.001){
mid=(max+min)/2;
if(mid*mid*mid>input){
max=mid;
}else if(mid*mid*mid<input){
min=mid;
}else {
return mid;
}
}
return mid;
}
}
知识点:
1.二分查找的方法适合求最合适的值,最优值
2.java中控制有效数字的方法:(1)使用String.format方法,例如,System.out.println(String.format("%.2f", data));
(2)使用 printf 输出,System.out.printf("%.2f", data);