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 相关文章推荐
pymssql数据库操作MSSQL2005实例分析
May 25 Python
Django接受前端数据的几种方法总结
Nov 04 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 Python
python的debug实用工具 pdb详解
Jul 12 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
django创建css文件夹的具体方法
Jul 31 Python
Django mysqlclient安装和使用详解
Sep 17 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 Python
python中subplot大小的设置步骤
Jun 28 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
教你如何使用php session
2013/10/28 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
vue组件与复用详解
2018/04/08 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
python计算方程式根的方法
2015/05/07 Python
Python中IPYTHON入门实例
2015/05/11 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
python入门教程 python入门神图一张
2018/03/05 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
内部类的定义、种类以及优点
2013/10/16 面试题
土木工程专业自荐信
2013/10/04 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python