浮点型十进制与二进制相互转换

 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)

 

本代码支持且仅支持带浮点的数据,

书上说,如非必要,勿增实体,所以还是不写太多了,有些时候就是会对莫名其妙的想法特别认真,够用就行了吧

 

posted @ 2018-06-12 13:29  那年那兔  阅读(1747)  评论(0编辑  收藏  举报