1 def inverse(a): #将数字逆序 2 m='' 3 for i in a[::-1]: 4 m=m+i 5 return str(int(m)) 6 def bTod(b,pre=3): #二进制转换为十进制 7 a=b.split('.',1) 8 m=0 9 n=0 10 for i in range (0,len(a[0])): 11 m=m+int(a[0][len(a)-1-i])*2**i 12 for i in range (0,len(a[1])): 13 n=n+int(a[1][i])*2**(-i-1) 14 d=m+n 15 return print("结果是{:.{}f}" .format(d,pre)) 16 def dTob(d,pre=3): #十进制转换为二进制 17 a=d.split('.',1) 18 m='' 19 n='' 20 c=int(a[0]) 21 for i in range (0,100): 22 b=c%2 23 c=c//2 24 m=m+str(b) 25 m=inverse(m) 26 e=int(a[1])*10**(-len(a[1])) 27 for i in range (0,100): 28 e=e*2 29 f=int(e//1) 30 e=e%1 31 n=n+str(f) 32 b=eval(m+'.'+n) 33 return print("结果是{:.{}f}" .format(b,pre)) 34 b=input("二进制数字,输出十进制数字") 35 pre=input("数字精度") 36 bTod(b,pre) 37 d=input("十进制数字,输出二进制数字") 38 pre=input("数字精度") 39 dTob(d,pre)
本代码支持且仅支持带浮点的数据,
书上说,如非必要,勿增实体,所以还是不写太多了,有些时候就是会对莫名其妙的想法特别认真,够用就行了吧