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中__call__用法实例
Aug 29 Python
零基础写python爬虫之爬虫的定义及URL构成
Nov 04 Python
python在windows命令行下输出彩色文字的方法
Mar 19 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
Python 实现训练集、测试集随机划分
Jan 08 Python
使用PyTorch训练一个图像分类器实例
Jan 08 Python
详解Python3中的 input() 函数
Mar 18 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 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简单封装了一些常用JS操作
2007/02/25 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
django2 快速安装指南分享
2018/01/05 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
详解numpy的argmax的具体使用
2019/05/27 Python
django admin组件使用方法详解
2019/07/19 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
智利最大的网上商店:Linio智利
2016/11/24 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
汽车维修专业个人求职信范文
2014/01/01 职场文书
研修第一天随笔感言
2014/02/15 职场文书
大学军训感言400字
2014/03/11 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers