题解 | #求解立方根#

求解立方根

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

为了不使用库函数,直接确解,逐位接近。

while True:
    try:
        Num = float(input())
        if Num<0:
            N_flag = -1
            Num = (-1)*Num
        elif Num == 0:
            result = 0
        else:
            N_flag = 1
        i = 0
        while(i**3<=Num):
            i+=1
        j=0
        while((i-1)+j*0.1)**3 <= Num:
            j+=1
        k=0  #为了对小数点后第二位进行四舍五入,需要计算到第二位。
        while((i-1)+(j-1)*0.1+k*0.01)**3 <= Num:
            k+=1
        if k>=5:  #四舍五入
            result =(i-1 + (j)*0.1) * N_flag  #注意处理负数
        else:
            result =(i-1 + (j-1)*0.1) * N_flag
        #print(result)
        print(round(result,1))  ##最坑莫过于此,要取round
    except:
        break

全部评论
我也不明白为啥要用round函数,明明输出的就是一位小数位的结果啊。但是如不过用round函数,输入5的时候,输出的是1.7000000000000000000002,不知道为啥这样。
点赞 回复 分享
发布于 2022-01-27 01:35
有一个小错误,就是判断四舍五入的时候,应该是k>5,而不是k>=5,因为若是第二个小数位处于4—5之间的临界点时,k还会加一次,变成5,这时候就会五入到第一个小数位,但实际上应当四舍掉。如268的立方根是6.44,也就是6.4,按你的算法,得出的是6.5,所以有点小问题,修改一下就完美了。
点赞 回复 分享
发布于 2022-01-27 01:06

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
7
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务