python十进制和二进制的转换方法(含浮点数)

作者:kick-ass。Nuisance 时间:2021-04-03 02:26:24 

本文介绍了python十进制和二进制的转换方法(含浮点数),分享给大家,也给自己留个笔记,具体如下:

我终于写完了 , 十进制转二进制的小数部分卡了我将近一个小时

上代码


#-*- coding: utf-8
from decimal import Decimal
def bTod(n, pre=4):
 '''
 把一个带小数的二进制数n转换成十进制
 小数点后面保留pre位小数
 '''
 string_number1 = str(n) #number1 表示二进制数,number2表示十进制数
 decimal = 0 #小数部分化成二进制后的值
 flag = False  
 for i in string_number1: #判断是否含小数部分
   if i == '.':
     flag = True
     break
 if flag: #若二进制数含有小数部分
   string_integer, string_decimal = string_number1.split('.') #分离整数部分和小数部分
   for i in range(len(string_decimal)):
     decimal += 2**(-i-1)*int(string_decimal[i]) #小数部分化成二进制
   number2 = int(str(int(string_integer, 2))) + decimal
   return round(number2, pre)
 else: #若二进制数只有整数部分
   return int(string_number1, 2)#若只有整数部分 直接一行代码二进制转十进制 python还是骚

def dTob(n, pre=4):
 '''
 把一个带小数的十进制数n转换成二进制
 小数点后面保留pre位小数
 '''
 string_number1 = str(n) #number1 表示十进制数,number2表示二进制数
 flag = False  
 for i in string_number1: #判断是否含小数部分
   if i == '.':
     flag = True
     break
 if flag:
   string_integer, string_decimal = string_number1.split('.') #分离整数部分和小数部分
   integer = int(string_integer)
   decimal = Decimal(str(n)) - integer
   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_convert + str(result)
     i = i + 1
   string_number2 = string_integer + '.' + decimal_convert
   return float(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]])
   return int(string_number)

来源:http://www.cnblogs.com/m17773572025/p/9148489.html

标签:python,十进制,转换,二进制
0
投稿

猜你喜欢

  • 一文详解go mod依赖管理详情

    2023-07-13 04:35:06
  • 解决python3 json数据包含中文的读写问题

    2022-07-22 03:04:51
  • 基于PHP+MySQL的聊天室设计

    2023-11-22 19:26:25
  • 某一公司的ASP面试题

    2011-09-15 20:50:20
  • oracle数据库导入导出命令使用方法

    2023-07-22 19:06:39
  • Python操作串口的方法

    2021-11-24 07:09:10
  • Python selenium爬取微博数据代码实例

    2023-07-01 02:46:49
  • 常用的JavaScript表单验证正则表达式收集

    2008-02-29 08:34:00
  • 感知器基础原理及python实现过程详解

    2023-11-07 16:24:35
  • ASP程序中使用断开的数据记录集的代码

    2012-12-04 20:20:28
  • Python 的第三方调试库 ​​​pysnooper​​ 使用示例

    2022-09-22 09:19:39
  • python 遍历磁盘目录的三种方法

    2021-10-15 06:36:14
  • asp中记录集对象的getrows和getstring用法分析

    2012-11-30 20:09:49
  • Python requests.post方法中data与json参数区别详解

    2022-02-06 09:06:20
  • Python三元运算与lambda表达式实例解析

    2023-06-14 16:34:09
  • HTML的优化杂记

    2010-03-10 10:39:00
  • Python Matplotlib绘制动图平滑曲线

    2022-12-28 22:23:40
  • Python3.8.2安装包及安装教程图文详解(附安装包)

    2021-11-17 19:35:14
  • python字符串常用方法

    2023-05-29 13:54:15
  • python在协程中增加任务实例操作

    2023-02-17 22:57:48
  • asp之家 网络编程 m.aspxhome.com