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中MySQLdb模块用法实例
Nov 10 Python
python通过函数属性实现全局变量的方法
May 16 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
python删除服务器文件代码示例
Feb 09 Python
Python读写及备份oracle数据库操作示例
May 17 Python
python实现诗歌游戏(类继承)
Feb 26 Python
python实现移位加密和解密
Mar 22 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
给 TensorFlow 变量进行赋值的方式
Feb 10 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
Python学习笔记之装饰器
Aug 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中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP实现简易blog的制作
2016/10/24 PHP
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
Python字符串切片操作知识详解
2016/03/28 Python
python删除过期log文件操作实例解析
2018/01/31 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
土木工程专业大学毕业生求职信
2013/10/13 职场文书
土木工程毕业生推荐信
2013/10/28 职场文书
医院实习介绍信
2014/01/12 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
总结表彰大会主持词
2014/03/26 职场文书
家长建议怎么写
2014/05/15 职场文书
校庆口号
2014/06/20 职场文书
捐款活动总结
2014/08/27 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
2015中秋祝酒词
2015/08/12 职场文书
vue 自定义组件添加原生事件
2022/04/21 Vue.js
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis