浮點型十進制與二進制相互轉換


 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)

 

本代碼支持且僅支持帶浮點的數據,

書上說,如非必要,勿增實體,所以還是不寫太多了,有些時候就是會對莫名其妙的想法特別認真,夠用就行了吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM