Python 含小数的十、二进制相互转换
'''
二进制->十进制: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 含小数的十、二进制相互转换的更多相关文章
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- Python开发【第二十篇】:缓存
Python开发[第二十篇]:缓存redis&Memcache 点击这里 Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy ...
- Python语言中各种进制相互转换
目录 Python语言中各种进制相互转换 将二进制.八进制.十进制的数分别转换成十进制的方法 将十进制转换成二进制.八进制.十六进制 Python语言中各种进制相互转换 本文参考自https://ww ...
- python自动华 (十二)
Python自动化 [第十二篇]:Python进阶-MySQL和ORM 本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增 ...
- python的进制转换二进制,八进制,十六进制及其原理
#!usr/bin/env python# coding:utf-8def binary(): '''二进制的方法与算法''' Number = 10 Number1 = 20 Nu ...
- Python开发【第十篇】:CSS --无内容点击-不进去(一)
Python开发[第十篇]:CSS --无内容点击-不进去(一)
- Python学习笔记(十四)
Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...
- Python学习笔记(十)
Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...
- java 小数转换成二进制
32位单精度二进制 = [1个符号位] [8个阶码位] [23个尾数位] 64位单精度二进制 = [1个符号位] [11个阶码位] [52个尾数位] 小数 = [正负符号位] [整数部分] . [小 ...
随机推荐
- Socket进阶篇
Socket简介 1,socket是什么? 2,socket的作用 3,socket怎么用 4,socket的扩展 ——————————————————- socket是什么? Socket这个名词现 ...
- Sql 2017 安装到sql_shared_mrconfigaction-install-confignonrc-cpu64卡住不动问题
解决方法:取消功能选择的实例功能和共享功能中的"机器学习服务(数据库内)""机器学习服务器(独立)"
- 简析TCP的三次握手与四次分手(TCP协议头部的格式,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端)good
2014-10-30 分类:理论基础 / 网络开发 阅读(4127) 评论(29) TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更 ...
- MongoDB对文档的操作
插入文档 db.COLLECTION_NAME.insert({doc1},{doc2},...) e.g.:db.collection.insert({name:'123',age:12},{nam ...
- 在Azure中新建Linux
开始学习Linux,这里开个系列用来记录Linux的学习笔记,这些是在实验楼:https://www.shiyanlou.com/的学习笔记. 这一篇是在Azure中新建一个Ubuntu的服务器用于练 ...
- 值得推荐的C/C++框架和库(深度好文)
[本文系外部转贴,原文地址:http://www.cppblog.com/merlinfang/archive/2014/12/26/209311.html http://coolshell.info ...
- easyui在IE中: SCRIPT1003: 缺少 ':'
- c# json key转大小写
有需求需要将json的字段转换为小写,使用正则表达式实现,代码如下 正则表达式为 \"[a-zA-Z0-9]+\"\s*: MatchCollection ms = Regex ...
- RequestMappingHandlerAdapter和RequestParam原理分析
我们要使用定义了RequestMapping方法或者类是,需要先准备好所需要的参数.如何准备参数,我们应该考虑些上面问题. 都有哪些参数需要绑定? 除了方法确定的参数,还有两个方法的参数需要绑定,那就 ...
- aspose授权亲测可用配套代码
支持excel,word,ppt,pdf using Aspose.Cells; using Aspose.Words.Saving; using ESBasic; using OMCS.Engine ...