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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
python requests post多层字典的方法
Dec 27 Python
基于Python实现用户管理系统
Feb 26 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
pymysql的简单封装代码实例
Jan 08 Python
基于Python把网站域名解析成ip地址
May 25 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
python中的测试框架
Nov 13 Python
PyTorch dropout设置训练和测试模式的实现
May 27 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+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
决策树的python实现方法
2014/11/18 Python
Python 字典dict使用介绍
2014/11/30 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Python3 assert断言实现原理解析
2020/03/02 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
工商学院毕业生自荐信
2013/11/12 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
新员工入职感言
2014/02/01 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript
nginx安装以及配置的详细过程记录
2021/09/15 Servers
MySQL插入数据与查询数据
2022/03/25 MySQL
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技