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使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python IDLE入门简介
Dec 08 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
python pandas模块基础学习详解
Jul 03 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
python3实现简单飞机大战
Nov 29 Python
Prometheus开发中间件Exporter过程详解
Nov 30 Python
Django cookie和session的应用场景及如何使用
Apr 29 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
jQuery TextBox自动完成条
2009/07/22 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
python显示生日是星期几的方法
2015/05/27 Python
Python中is与==判断的区别
2017/03/28 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
python如何代码集体右移
2020/07/20 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
拉丁舞学习者的自我评价
2013/10/27 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
规范化管理年活动总结
2014/08/29 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Vue详细的入门笔记
2021/05/10 Vue.js