二分法,注意输入可能有负数
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)); } }