思想
在编程中没有开根号这种直接的操作,所以必须要借用暴力来计算 (x^3 = 目标值),从而获得 x
方法
1.划定范围,准备暴力 (题目会给暴力范围)
2.二分夹击获得目标值的三次方
3.保留6位小数以及所有整数
注意点
- 1e-8是10的负八次方,一个非常小的浮点数。(用来限定循环,因为浮点数mid可以无限细,我们只需要相对细的就足够,毕竟只需要保留6位小数)
new ``DecimalFormat``_(_``"#.000000"``_)_``.format``_(_``left``_)_
保留所有整数,和6位小数(从7位开始四舍五入)浮点数不存在取整问题
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double left = -10000;
double right = 10000;
//外部输入
double goal = sc.nextDouble();
while(right - left > 1e-8){
double mid = (left+right)/2;
if (mid*mid*mid > goal){
right = mid;
}else{
left = mid;
}
System.out.println(new DecimalFormat("#.000000").format(left));
}
}