题解 | #求解立方根#
求解立方根
http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
二分法
注意结果精度只保留一位 和 输入为负数时
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double input = scanner.nextDouble();
double num= input>0? input:-input; //负数 当正数来处理
double bottom = 0;
double top = 0;
while (top * top * top < num) { // 比如 5 介于 1^3 和 2^3之间
top++;
}
bottom = top - 1;
double mid = bottom + (top - bottom) / 2;
double mul = mid * mid * mid;
while(top - bottom > 0.1){ // 因为只保留一位小数
if (mul > num) {
top = mid;
} else if (mul < num) {
bottom = mid;
}
mid = bottom + (top - bottom) / 2;
mul = mid * mid * mid;
}
if(input<0){// 原数为负,结果也应该为负
mid=-mid;
}
System.out.println(String.format("%.1f",mid)); // 12 => 2,3 -5 ==> -1.7
}
}