题解 | #求解立方根#

求解立方根

http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

import java.util.*;
public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                double n = sc.nextDouble();
                double num = n>0?n:-n;//负数先当正数处理
                double bottom=0;
                double top =0;
                //先假设 这个数的立方根是介于 bottom和top之间
                while(top*top*top< num){
                    top++;
                }
                bottom=top-1;
                //定义 bottom和top的中间值
                double mid = bottom+(top-bottom)/2;
                double mul = mid*mid*mid;
                while(top-bottom>0.1){
                    //二分 逐渐判断top到mid  还是 mid到bottom
                    if(mul>num){
                        top=mid;
                    }else{
                        bottom=mid;
                    }
                    mid = bottom+(top-bottom)/2;
                    mul = mid*mid*mid;
                }
                if(n<0){
                    mid=-mid;
                }
                System.out.println(String.format("%.1f",mid));
            }
        }
}
全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
10-10 17:54
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务