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个尾数位] 小数 = [正负符号位] [整数部分] . [小 ...
随机推荐
- 什么是TOML?
配置文件的使用由来已久,从.ini.XML.JSON.YAML再到TOML,语言的表达能力越来越强,同时书写便捷性也在不断提升. TOML是前GitHub CEO, Tom Preston-Werne ...
- Android零基础入门第78节:四大组件的纽带——Intent
前面学习Activity时己经多次使用了 Intent,当一个Activity需要启动另一个Activity时, 程序并没有直接告诉系统要启动哪个Activity,而是通过Intent来表达自己的意图 ...
- Caliburn.Micro 自定义View和ViewModel的匹配规则
使用TypeMappingConfiguration类 //Override the default subnamespaces var config = new TypeMappingConfigu ...
- 使用 Napa 创建并调试一个 Office 内容应用 – Hello World
原文地址:http://simpeng.net/office-add-in/%e4%bd%bf%e7%94%a8-napa-%e5%88%9b%e5%bb%ba%e5%b9%b6%e8%b0%83%e ...
- delphi7 xml通用解析转换为stringgrid
对于有n多记录的xml,可以填充到stringgrid中 其中 vkeynode 为 xml中 重复节点 function CommonAnalyzeXml(vxml,vkeynode: string ...
- UITableViewStyleGrouped 设置表头出现section不为0的问题
UITableViewStyleGrouped 设置表头出现section不为0的问题 1.如果使用UITableViewStylePlain样式的表格,那么header是会在表格滑动的时候在顶部悬浮 ...
- Cleanmymac X 4.4.3 激活破解版|兼容mac最新系统-Mac电脑清理工具
CleanMyMac X 4.4.3 激活破解版为最新版清理工具,为你所爱的东西腾出空间.CleanMyMac拥有一系列巧妙的新功能,它可以安全.智能地扫描和清理整个系统,删除大的未使用的文件,卸载不 ...
- ZooKeeper学习第三期---Zookeeper命令操作(转)
转载来源:https://www.cnblogs.com/sunddenly/p/4031881.html 一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他 ...
- vmware vSphere Data Protection 6.1 使用备份、恢复、报告
一.6个选项卡说明 1.getting started 开始,提供VDP功能概述以及指向创建备份作业向导.恢复向导.报告选项卡的快速连接 2.backup 提供已计划备份作业的列表以及有关备份作业的详 ...
- JVM史上最全实践优化没有之一
JVM史上最全优化没有之一 1.jvm的运行参数 1.1 三种参数类型 1.1.1 -server与-clinet参数 2.1 -X参数 2.1.1 -Xint.-Xcomp.-Xmixed 3.1 ...