本文介绍和共享了包含浮点数的python的十进制和二进制转换方法,并留下了笔记。 具体情况如下:
终于写完了。 从十进制到二进制的小数部分花了我将近一个小时
上传代码
#-*- coding: utf-8
from decimal import Decimal
defBtod(n,pre=4) :
“”'
将包含小数的二进制数n转换为十进制数
在小数点后面留下pre位的小数
“”'
string_number1=str(n ) #number1表示二进制数,number2表示十进制数
decimal=0 #将小数部分二进制化后的值
flag=False
for i in string_number1: #判断有无小数部分
if i=='.':
flag=True
布莱克
if flag: #进制数中包含小数部分时
string_integer,string _ decimal=string _ number1. split '.' #分离整数部分和小数部分
foriinrange (字符串描述) :
decimal=2**(-I-1 ) int(string_decimal[I] ) #小数部分是二进制
number2=int (str (int (string _ integer,2 ) ) ) )深度
返回路径(number 2,pre ) )。
else: #如果二进制数只有整数部分
return int (string _ number 1,2 ) #是直接将一行代码转换为二进制十进制python,还是骚扰整数部分
defdtob(n,pre=4) :
“”'
将带有小数的十进制数n转换为二进制数
在小数点后面留下pre位的小数
“”'
string_number1=str(n ) #number1表示十进制数,number2表示二进制数
flag=False
for i in string_number1: #判断有无小数部分
if i=='.':
flag=True
布莱克
if flag:
string_integer,string _ decimal=string _ number1. split '.' #分离整数部分和小数部分
integer=int(string_integer ) )。
decimal=decimal(str(n ) ) -集成器
L1=[ 0,1 ]
l2=[]
decimal_convert=' '
while True:
if integer==0: break
x,y=divmod(integer,2 ) #x为商,y为剩余
L2.append(y ) )。
integer=x
string_integer=''.join([str(j ) for j in l2[:-1]] )将整数部分转换为二进制
i=0
while decimal!=0 and i pre:
result=int(decimal*2) )
decimal=decimal * 2 - result
decimal _ convert=decimal _ convertstr (result )
i=i 1
string _ number2=string _ integer '.' decimal _ convert
返回浮点(string _ number2) )。
else: #如果二进制数只有整数部分
L1=[ 0,1 ]
l2=[]
while True:
if n==0: break
x,y=divmod(n,2 ) #x为商,y为剩余
L2.append(y ) )。
n=x
string_number=''.join([str(j ) for j in l2[:-1]] )
returnint(string_number ) )。
以上是本文的全部内容,希望对大家的学习有帮助。 另外,我希望你多支持找教程网。