我想把这个数转换成二进制,这样我以后就可以把它转换成浮点数,我知道的算法是在一个数的点后面,例如,如果我把9.32放在函数puntoflot()上,取0.32除以0.5,当它除以0.5时,它取第一个数字,放在z上,然后取左边的小数,继续除以它,你可以在代码中找到它。。。。如果这个算法是好的任何帮助将是一个感激的
valorbinario()函数对于9.32这样的大数字非常有效,但是对于9.10938291*10**-31这样的数字,它根本不运行valorbinario(),因为它指出了这个错误
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
valorbinario(9.10938291*10**-31)
File "C:/Users/Emmanuel/Desktop/asdfad.py", line 26, in valorbinario
x=puntoflot(numeroderecha)
File "C:/Users/Emmanuel/Desktop/asdfad.py", line 11, in puntoflot
dere=int(x[2:])
ValueError: invalid literal for int() with base 10: '18765820000004e-32'
puntoflot()接收点之后的部分,例如9.28它采用0.28形式valorbinario()valorbinario采用浮点数并执行许多操作,它减去小数并将其放在函数puntoflot()上,以便将其转换为二进制,然后将本例中的自然数9转换为二进制,然后返回整数本例中的编号为“1001.010001111010111011001100”
那我该怎么做??如果你能想出一个更好的算法来转换成二进制我会很高兴,但如果没有,我怎么能解决这个??你知道吗
好的,这是我的密码
首先用一个数字运行valorbinario()另一个函数idk为什么我把它变成一个函数。。。。我刚开始学代码
def puntoflot(y):
i=0
z=""
while i<=23:
x=str(y/0.5)
z=z+str(x[0])
dere=int(x[2:])
y=float("0."+str(dere))
i+=1
return z
def valorbinario(numero):
numero=str(numero)
pos=numero.index(".")
numeroderecha=float("0."+str(numero[pos+1:]))
numeroizquierda=numero[:pos]
y=bin(int(numeroizquierda))
x=puntoflot(numeroderecha)
return y[2:]+"."+str(x)
对于
int
而言,bin(numero)
起作用。对于小于1的float
,可以尝试以下方法:这将给出数字的倒数(1/x),并将其转换为
int
,然后您可以稍后再次反转。你知道吗相关问题 更多 >
编程相关推荐