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个尾数位] 小数 = [正负符号位] [整数部分] . [小 ...
随机推荐
- workerman源码分析之启动过程
PHP一直以来以草根示人,它简单,易学,被大量应用于web开发,非常可惜的是大部分开发都在简单的增删改查,或者加上pdo,redis等客户端甚至分布式,以及规避语言本身的缺陷.然而这实在太委屈PHP了 ...
- Windows 10开发基础——XML和JSON (一)
主要内容: JSON的序列化与反序列化 XML的序列化与反序列化 1.JSON的序列化与反序列化 JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,它 ...
- System.Exception: ORA-12541: TNS: 无监听程序
今天在一个服务器上发布一个web服务(数据库也装在这台机器上):开发工具 Visual Studio 2008 Oracle但是部署好,浏览的时候报错了:System.Web.Services.Pro ...
- 了解Service
多线程编程: 线程的基本用法: 1. class MyThread extends Thread{ @Override public void run() { //处理具体逻辑 } } new MyT ...
- C# winform 主界面打开并关闭登录界面
在winform 界面编程中,我们有时候要在主界面打开之前先显示登录界面,当登录界面用户信息校验正确后才打开主界面,而这时登陆界面也完成使命该功成身退了. 目前有两种方法可实现: 方法1. 隐藏登录界 ...
- BuildWinRTL.dproj 用这个重新编译就行
BuildWinRTL.dproj 用这个重新编译就行 我每次安装新版本,都删掉了这两个函数 {$IFDEF DEBUG}exports dbkFCallWrapperAddr,{$IF defin ...
- QT5.6,5.7,5.8的新特征以及展望(Qt5.7首次正式支持Qt3D,以前都是预览版)
https://wiki.qt.io/New_Features_in_Qt_5.6 (跨平台High-DPI,改进WebEngine到45,支持WIN 10,Canvas3D,3D) https:// ...
- 高效的DDoS攻击探测与分析工具 – FastNetMon
快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...
- ElasticSearch2.3.1环境搭建哪些不为人知的坑
首先说明一点,大家最好不要用什么尝鲜版,用比稳定版就好了,要不麻烦不断,另外出了问题,最好去官网,或者google搜索,因为这样靠谱些,要不现在好多都是低版本的,1.4的什么的,结果按照安装,多少情况 ...
- 浅谈我在.net core一年里的收获
前言:以前一直在winserver的环境里从事web工作,安装一个sqlserver,iis,把项目部署上面就OK了,简单轻松一.结缘nginx以前一直听说nginx这个反向代理的web服务器,当玩n ...