浮点数作业
源代码如下:
传入一个浮点型字符串和有效数字位数
def fraction_to_binary(fraction_string, significant_binary_digits):
def print_binary(number_string, fraction_length):
dotleft=""
netative="+"
if float(number_string)<0:
netative="-"
if "." in number_string:
a,b=number_string.split(".")
else:
a=number_string
a=int(a)
if a<0:
a=-a
result=[]
def dec2bin(number):
if number==1:
result.insert(0,"1")
elif number==0:
result.insert(0,"0")
else:
if number%2==0:
result.insert(0,"0")
dec2bin(number//2)
else:
result.insert(0,"1")
dec2bin(number//2)
dec2bin(int(a))
for i in result:
dotleft+=i
#print(dotleft)
if "." in number_string:
number=float("0."+b)
count=0
dotright=""
number=float("0."+b)
while count<fraction_length:
if number*2>=1:
dotright=dotright+"1"
number=number*2-1
count+=1
else:
number*=2
dotright=dotright+"0"
count+=1
else:
dotright="0"*fraction_length
temp=netative+dotleft+"."+dotright
return temp[1:]
answer=print_binary(fraction_string, 15)
first_1=answer.index("1")
liebiao=list(answer[answer.index(".")+1:first_1+significant_binary_digits+1])
#print(liebiao)
#打印列表
for i in liebiao:
print(i,end=" ")
print()
#列表打印完毕
#处理进位
woshigetemp=-1
liebiao.insert(0,"0")
if liebiao[-1]=="1":
while 12138:
if liebiao[woshigetemp]=="0":
liebiao[woshigetemp]="1"
break
elif liebiao[woshigetemp]==".":
pass
else:
liebiao[woshigetemp]="0"
woshigetemp-=1
#print(liebiao[:-1])
###
###打印
print_str=""
#liebiao=liebiao[:-1]
liebiao=liebiao[:liebiao.index("1")+significant_binary_digits]
#print(liebiao)
liebiao.insert(1,".")
for i in liebiao:
print_str+=i
print(print_str)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律