注:该处的浮点数为正数,负数的情况大家可以做简单的修改。
import numpy as np
accuracy = 4 # 小数部分精度
def dtb(num):
#判断是否为浮点数
if num == int(num):
#若为整数
integer = '{:08b}'.format(int(num)) #{:08b} :高位补0
return integer
else:
#若为浮点数
#取整数部分
integer = int(num)
#取小数部分
flo = num - integer
#整数部分进制转换
integercom = '{:08b}'.format(integer)
#小数部分进制转换
tem = flo
tmpflo = []
for i in range(accuracy):
tem *= 2
tmpflo += str(int(tem))
tem -= int(tem)
flocom = tmpflo
return integercom + '.' + ''.join(flocom)
print(dtb(22.00))
运行结果:
00010110.0001