编程要求:
在 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))
这个是看到参考答案,有点泪奔,感觉自己方向好像都搞错了,写得太过于复杂了。