2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > #Python# 十进制数转换为二进制数(包含小数)

#Python# 十进制数转换为二进制数(包含小数)

时间:2020-02-24 05:29:27

相关推荐

#Python# 十进制数转换为二进制数(包含小数)

#Python# 十进制数转换为二进制数(包含小数)

问题描述问题分析代码

问题描述

编写程序,输入十进制小数(只考虑正数),把它转换为以字符串形式存储的二进制小数,输出该二进制小数字符串。对于转换得到的二进制小数,小数点后最多保留10位。小数点后不足10位,则输出这些位,尾部不补0;小数点后超出10位,则直接舍弃超出部分。十进制转换成二进制时,需要将整数和小数部分分开。整数部分的策略是除2取余,而小数部分的策略是乘2取整,分别转换后再将整数和小数部分合起来。不清楚的同学自己上网查阅相关资料。

本题需要编写2个函数,分别对应整数和小数部分的转换过程。

问题分析

拆分问题为:

(1)整数部分转换为二进制;

(2)小数部分转化为二进制;

(3)将整数部分与小数部分组合并输出。

问题(1):构造函数conInt(),将整数部分除2取余存入列表中,后逆序列表再合并为字符串返回;

问题(2):构造函数conFra(),将小数部分乘2取整存入列表篇中,后合并为字符串返回。需注意的是遇到无限乘2取整的十进制小数时,应舍0入1。

问题(3):使用print(f"{a},{b}")的句式,将字符串组合输出

代码

def conInt(n):s=[]while(n):s.append(str(n%2))n=n//2s.reverse()return "".join(s)def conFra(n):x=[]s=[]while(n):n=n*2x.append(str(int(n)))n=n-int(n)for i in range(0,10):s.append(x[i])return "".join(s)def main():n=eval(input())a=int(n)b=n-aprint(f"{conInt(a)}.{conFra(b)}")main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。