python十进制和二进制的转换方法(含浮点数)
本文介绍了python十进制和二进制的转换方法(含浮点数),分享给大家,也给自己留个笔记,具体如下:
我终于写完了,十进制转二进制的小数部分卡了我将近一个小时
上代码
#-*-coding:utf-8
fromdecimalimportDecimal
defbTod(n,pre=4):
'''
把一个带小数的二进制数n转换成十进制
小数点后面保留pre位小数
'''
string_number1=str(n)#number1表示二进制数,number2表示十进制数
decimal=0#小数部分化成二进制后的值
flag=False
foriinstring_number1:#判断是否含小数部分
ifi=='.':
flag=True
break
ifflag:#若二进制数含有小数部分
string_integer,string_decimal=string_number1.split('.')#分离整数部分和小数部分
foriinrange(len(string_decimal)):
decimal+=2**(-i-1)*int(string_decimal[i])#小数部分化成二进制
number2=int(str(int(string_integer,2)))+decimal
returnround(number2,pre)
else:#若二进制数只有整数部分
returnint(string_number1,2)#若只有整数部分直接一行代码二进制转十进制python还是骚
defdTob(n,pre=4):
'''
把一个带小数的十进制数n转换成二进制
小数点后面保留pre位小数
'''
string_number1=str(n)#number1表示十进制数,number2表示二进制数
flag=False
foriinstring_number1:#判断是否含小数部分
ifi=='.':
flag=True
break
ifflag:
string_integer,string_decimal=string_number1.split('.')#分离整数部分和小数部分
integer=int(string_integer)
decimal=Decimal(str(n))-integer
l1=[0,1]
l2=[]
decimal_convert=""
whileTrue:
ifinteger==0:break
x,y=divmod(integer,2)#x为商,y为余数
l2.append(y)
integer=x
string_integer=''.join([str(j)forjinl2[::-1]])#整数部分转换成二进制
i=0
whiledecimal!=0andi
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。