牛客网-97-华为

求解立方根

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

二分法解方程,因为单调,精度到了0.1的三次方终止

package org.niuke.solution97;

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        double d = scanner.nextDouble();
        //0.1*0.1*0.1=0.0001
        double l = 0.0, r = d;
        while (r - l > 0.0001) {
            double mid = (r + l) / 2;
            if(Math.pow(mid, 3) < d){
                l = mid;
            }else{
                r = mid;
            }
        }
        if(Math.pow(Math.round(r),3) == d){ //216的开方 6.0,精益求精,5.9
            System.out.printf("%.1f", (double) Math.round(r));
        }else{
            System.out.printf("%.1f", r);
        }
    }

}
全部评论
还有三个用例没过呀
3 回复 分享
发布于 2021-04-10 11:29
不能用类库函数Math
2 回复 分享
发布于 2020-09-01 19:37
你这过不了绝对值小于1的吧
1 回复 分享
发布于 2021-06-21 20:02
为什么0.1*0.1*0.1=0.0001
点赞 回复 分享
发布于 2020-07-03 21:51

相关推荐

暮雨轻歌:看起来hr不能接受我菜查看图片
点赞 评论 收藏
分享
评论
8
3
分享

创作者周榜

更多
牛客网
牛客企业服务