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


Posted in Python onJuly 07, 2018

本文介绍了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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 生成不重复的随机数的代码
May 15 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
python比较两个列表大小的方法
Jul 11 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
Python比较配置文件的方法实例详解
Jun 06 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
Python如何测试stdout输出
Aug 10 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
解决pytorch 模型复制的一些问题
Mar 03 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 #Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 #Python
python3 kmp 字符串匹配的方法
Jul 07 #Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 #Python
详解Python最长公共子串和最长公共子序列的实现
Jul 07 #Python
python求最大连续子数组的和
Jul 07 #Python
python 平衡二叉树实现代码示例
Jul 07 #Python
You might like
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
如何通过Python实现标签云算法
2019/07/02 Python
python中append实例用法总结
2019/07/30 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
21岁生日感言
2014/02/27 职场文书
银行催款通知书
2015/04/17 职场文书
公积金贷款承诺书
2015/04/30 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
python实现简单的井字棋
2021/05/26 Python
MySQL数据库完全卸载的方法
2022/03/03 MySQL