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编写一个简单的Lisp解释器的教程
Apr 03 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
python去掉行尾的换行符方法
Jan 04 Python
TensorFlow实现创建分类器
Feb 06 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
简单了解Python3里的一些新特性
Jul 13 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 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更快的提供文件下载的代码
2012/06/13 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
three.js 入门案例详解
2018/01/23 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
复习Python中的字符串知识点
2015/04/14 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
python实现合并两个排序的链表
2019/03/03 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
Python socket处理client连接过程解析
2020/03/18 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
如何使用Pytorch搭建模型
2020/10/26 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
导游词之无锡古运河
2019/11/14 职场文书
比较node.js和Deno
2021/04/27 Javascript
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python