#Python# 十进制数转换为二进制数(包含小数)
程序员文章站
2022-07-15 09:56:41
...
问题描述
编写程序,输入十进制小数(只考虑正数),把它转换为以字符串形式存储的二进制小数,输出该二进制小数字符串。对于转换得到的二进制小数,小数点后最多保留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//2
s.reverse()
return "".join(s)
def conFra(n):
x=[]
s=[]
while(n):
n=n*2
x.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-a
print(f"{conInt(a)}.{conFra(b)}")
main()
上一篇: 用C语言实现Ping程序功能
下一篇: 十进制小数转换为二进制
推荐阅读