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)
本代碼支持且僅支持帶浮點的數據,
書上說,如非必要,勿增實體,所以還是不寫太多了,有些時候就是會對莫名其妙的想法特別認真,夠用就行了吧
