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 相关文章推荐
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
详解Python中的动态属性和特性
Apr 07 Python
python3.x实现发送邮件功能
May 22 Python
python 自定义对象的打印方法
Jan 12 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
Python基于scipy实现信号滤波功能
May 08 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
如何使用Django Admin管理后台导入CSV
Nov 06 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 图像处理类1
2009/06/15 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
js中创建对象的几种方式
2017/02/05 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Ionic2调用本地SQlite实例
2017/04/22 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
使用Python对Access读写操作
2017/03/30 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Django框架模板用法入门教程
2019/11/04 Python
PyQt实现计数器的方法示例
2021/01/18 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
研究生自我鉴定范文
2013/10/30 职场文书
男方父母证婚词
2014/01/12 职场文书
病危通知单
2015/04/17 职场文书
代理词怎么写
2015/05/25 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
python爬取豆瓣电影TOP250数据
2021/05/23 Python
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技