编程要求:


 在 Begin-End 区间实现DecToBin_point(d)函数,其功能是用乘二取整方法计算十进制纯小数d对应的二进制表示,说明如下:
  1)在测试集中,d均为正数(如果你的程序还能处理其它情况则更好);
  2)n 取 8,即最多算到小数点后 8 位;
  3)不准使用 Python 提供的进制转换函数


def DecToBin_point(d):
    L,i=[],1
    while i<=8:
        d=d*2  
        D=int(d)
        L.append(D)
        i=i+1
        d=d-D
    b=0
    for x in range(len(L)):
            b=b+L[x]*0.1**(x+1)
    return b
d = float(input())     #十进制纯小数  
b = DecToBin_point(d)  #转换成二进制  
print('%s -> %s' % (d, b))

这个在能得出答案,小数点后面没有按要求取到8位数。


########## Begin ##########  
def DecToBin_point(d):  
    b='0.'  
    while d!=0:  
        d = d*2        #乘二  
        if d>=1:       #取整(整数部分为1)  
            b=b+'1'  
            d=d-1      #下次乘二只乘小数部分  
        else:          #取整(正数部分为0)  
            b=b+'0'  
        if len(b)==8+2:#达到精度要求则结束  
            break  
    return b  
########## End ##########  
d = float(input())     #十进制纯小数  
b = DecToBin_point(d)  #转换成二进制  
print('%s -> %s' % (d, b))

这个是看到参考答案,有点泪奔,感觉自己方向好像都搞错了,写得太过于复杂了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐