二分法,注意输入可能有负数
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
double n = scanner.nextDouble();
func(n);
}
public static void func(double n){
int flag = 1;
if(n < 0){
//n小于0,用flag标记n的正负
flag = -1;
n = -n;
}
double mid = 10;
double left = 0;
double right = 20;
while(left < right-0.001){
mid = (left+right)/2;
if(Math.pow(mid,3) > n){
right = mid;
}else if(Math.pow(mid,3) < n){
left = mid;
}else{
break;
}
}
//flag标记正负
mid *= flag;
System.out.println(String.format("%.1f",mid));
}
}

京公网安备 11010502036488号