'''
二进制->十进制:bTod
整数部分:a乘以2的n次方(n:a后面的整数位数)
小数部分:a乘以2的-n次方(n:a是小数点后几位)
十进制->二进制dTob
整数部分:短除法(除二取余法,逆序输出)
小数部分:乘二取整法,0.……正向输出所得 注意:函数中形参n为字符串类型,函数中首先判断是否含小数点,
并将小数部分与整数部分分离,分开来算,最后再相加即为结果,
注意字符串与数字类型之间的转换
'''
#二进制->十进制
def bTod(n, pre = 4):
s_int = n
s_float = ''
total_int, total_float = 0, 0 #将整数部分与小数部分分离并分别存在s_int,s_float字符串中
if '.' in n:
s_int, s_float = n.split('.') #整数部分转化为十进制,li为整数部分的长度,记录到整数末尾的长度,结果记在total_int中
li = len(s_int)
for c in s_int:
li = li - 1
total_int = total_int + int(c)*pow(2,li) #小数部分转化为十进制,lf记录距离小数点的位数,结果记在total_float中
lf = 0
for c in s_float:
lf = lf + 1
total_float = total_float +int(c)*pow(2,-lf) #小数与整数相加,输出结果,保留pre位小数
print("{}转化为十进制是{:.{}f}".format(n,total_int + total_float, pre)) #十进制->二进制
def dTob(n, pre = 4):
num_int = int(eval(n))
num_float = eval(n) - num_int
t_int, t_float = '', '' #将整数小数部分分离并分别存到字符串s_int,s_float中
if '.' in n:
s_int, s_float = n.split('.') #除二取余,并将取得的余数存在t_int字符串中
while num_int!= 0:
a = num_int % 2
t_int = t_int + str(a)
num_int = num_int//2 #乘二取整,并将取得的整数存在t_float字符串中
while num_float != 0:
b = num_float*2
t_float = t_float + str(int(b))
num_float = b - int(b) #print(t_int[::-1] + '.' + t_float[:])
#将整数部分与小数部分用小数点相连,将整个的字符串转化为数字,并保留pre位小数
print("{}转化为二进制是{:.{}f}".format(n,eval(t_int[::-1] + '.' + t_float[:]), pre))
 #测试代码
a = input("请输入0(转化为十进制)或输入1(转化为二进制):")
if a == '':
while True:
n = input("请输入一个二进制数:")
flag = 1
for c in n:
if c != '' and c != '':
print("输入错误,请重新输入")
flag = 0
break
if flag:
break
pre = int(input("请输入保留几位小数:"))
bTod(n,pre)
elif a == '':
while True:
n = input("请输入一个十进制数:")
flag = 1
for c in n:
if c <= '' or c >= '':
print("输入错误,请重新输入")
flag = 0
break
if flag:
break
pre = int(input("请输入保留几位小数:"))
dTob(n,pre)
else:
print("无效输入")

此博文为作者原创,转载请注明来源~ https://www.cnblogs.com/zcl843264327/p/9348199.html

Python 含小数的十、二进制相互转换的更多相关文章

  1. Python开发【第二十二篇】:Web框架之Django【进阶】

    Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...

  2. Python开发【第二十篇】:缓存

    Python开发[第二十篇]:缓存redis&Memcache   点击这里 Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy ...

  3. Python语言中各种进制相互转换

    目录 Python语言中各种进制相互转换 将二进制.八进制.十进制的数分别转换成十进制的方法 将十进制转换成二进制.八进制.十六进制 Python语言中各种进制相互转换 本文参考自https://ww ...

  4. python自动华 (十二)

    Python自动化 [第十二篇]:Python进阶-MySQL和ORM 本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增 ...

  5. python的进制转换二进制,八进制,十六进制及其原理

    #!usr/bin/env python# coding:utf-8def binary(): '''二进制的方法与算法'''    Number = 10    Number1 = 20    Nu ...

  6. Python开发【第十篇】:CSS --无内容点击-不进去(一)

    Python开发[第十篇]:CSS  --无内容点击-不进去(一)

  7. Python学习笔记(十四)

    Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...

  8. Python学习笔记(十)

    Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...

  9. java 小数转换成二进制

    32位单精度二进制 = [1个符号位] [8个阶码位] [23个尾数位] 64位单精度二进制 = [1个符号位] [11个阶码位] [52个尾数位] 小数 = [正负符号位]  [整数部分] . [小 ...

随机推荐

  1. 图像滤镜艺术---ZPhotoEngine超级算法库

    原文:图像滤镜艺术---ZPhotoEngine超级算法库 一直以来,都有个想法,想要做一个属于自己的图像算法库,这个想法,在经过了几个月的努力之后,终于诞生了,这就是ZPhotoEngine算法库. ...

  2. iOS-HTTP浅析

    HTTP原理 什么是URL URL中常见的几种协议 什么是HTTP协议 HTTP是做什么的 为什么要使用HTTP协议 HTPP协议的通信过程介绍 HTTP请求 HTTP响应 HTTP请求的选择 两种发 ...

  3. 零元学Expression Blend 4 - Chapter 23 Deep Zoom Composer与Deep Zoom功能

    原文:零元学Expression Blend 4 - Chapter 23 Deep Zoom Composer与Deep Zoom功能 最近有机会在工作上用到Deep Zoom这个功能,我就顺便介绍 ...

  4. Android零基础入门第42节:自定义BaseAdapter

    原文:Android零基础入门第42节:自定义BaseAdapter 在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不 ...

  5. UWP入门(四)--设置控件样式

    原文:UWP入门(四)--设置控件样式 官方定义:可以使用 XAML 框架通过多种方式自定义应用的外观. 通过样式可以设置控件属性,并重复使用这些设置,以便保持多个控件具有一致的外观. 可分享至不同e ...

  6. 在Azure中搭建Ghost博客并绑定自定义域名和HTTPS

    绪论 之前一直使用cnblog写博客,现在将博客迁移至Microsoft Azure上的Ghost博客上,Ghost博客使用Markdown书写博客,页面简洁,是我喜欢的风格.具体参见官网:https ...

  7. Windows+Idea安装Hadoop开发环境

    前言:这种问题,本来不应该写篇博客的,但是实在是折磨我太久了,现在终于修好了,必须记一下,否则对不起自己的时间,对自己的博客道歉 *** 简介 环境:Windows 10+JDK1.8+Intelli ...

  8. 腾讯移动Web整体解决方案Spirit

    Spirit(勇气号),美国航天局NASA派往Mars(火星)的第一艘探测器.移动Web开发是一块新的领域,甚至有很多坑,这一点与人类从未踏上的Mars(火星)相似.为了避免开发者重复遇到相同的问题, ...

  9. 自定义QT窗口部件外观之QStyle

    自定义QT窗口部件外观 重新定义Qt内置窗口部件的外观常用的方法有两种:一是通过子类化QStyle 类或者预定义的一个样式,例如QWindowStyle,来定制应用程序的观感:二是使用Qt样式表. Q ...

  10. 什么是Android NDK

    1.NDK是一系列工具的集合. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译 ...