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个尾数位] 小数 = [正负符号位] [整数部分] . [小 ...
随机推荐
- 【shell】gerrit同步备份脚本的实现
本期分享下gerrit如何实现备份,由于之前的一台代码服务器直接down掉,所以为了以防万一,开始备份gerrit数据,有人说,gerrit不过是个审查代码的工具,备份这个做什么,git是分布式代码管 ...
- CenOS7 docker部署lnmp环境
Step1:下载lnmp镜像 [root@docker html]# docker pull winstonpro/lnmp Step2:启动lnmp镜像的docker实例 [root@docker ...
- JAVA SHA1加密
public static String getSha1(String str){ if(str==null||str.length()==0){ return null; } char hexDig ...
- delphi xe5 中TMemo控件的应用——for android
TMemo中的两个方法: TMemo.Lines.Add(stringxxx);意思是向TMemo中增加字符串stringxxx: TMemo.Lines.Text :=stringxxx,意思是清空 ...
- python常用点小记
记录一下,经常用到的一些python小工具 1.验证一个字符串是否为url regex = re.compile( r'^(?:http|ftp)s?://' # http:// or https:/ ...
- python之mock模块基本使用
mock简介 mock原来是python的第三方库 python3以后mock模块已经整合到了unittest测试框架中,不用再单独安装 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个 ...
- Mac上刚安装的WebStorm或PHPStorm遇到SVN版本太旧的问题
Mac上刚安装的WebStorm或PHPStorm遇到SVN版本太旧的问题: URL: svn: E155021: This client is too old to work with the wo ...
- 宜信开源|数据库审核软件Themis的规则解析与部署攻略
一.介绍 Themis是宜信公司DBA团队开发的一款数据库审核产品,可帮助DBA.开发人员快速发现数据库质量问题,提升工作效率.其名称源自希腊神话中的正义与法律女神.项目取此名称,寓意此平台对数据库质 ...
- spring cloud 系列第6篇 —— zuul 服务网关 (F版本)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.zuul简介 1.1 API 网关 api 网关是整个微服务系统的门面 ...
- Mac下安装redis5.0 与命令
参考链接:https://blog.csdn.net/zyp1376308302/article/details/84257606 参开链接2:https://www.cnblogs.com/guan ...