乘二取整#十进制纯小数转换成二进制

这篇博客讨论了一个Python编程问题,涉及将十进制纯小数转换为二进制表示。原始代码虽然能得出答案,但未按要求保留小数点后8位。参考答案提供了一个更简洁的实现,通过不断乘二取整并判断条件来达到目标精度,简化了原来的复杂逻辑。
摘要由CSDN通过智能技术生成

编程要求:


 在 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))

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

省心省事省时

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值