【发布时间】:2015-05-16 02:53:18
【问题描述】:
我想将此数字转换为二进制,以便稍后将其转换为浮点数,我知道的算法在数字的点之后取部分,例如,如果我输入 9.32 它需要 0.32 并将其除以 0.5函数 puntoflot() 除以 0.5 时,它取第一个数字并将其放在 z 上,然后取小数点左并继续除以,您可以在代码中找出它.... idk 如果这个算法很好,有什么帮助会感激的
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)
【问题讨论】:
-
“我想将此数字转换为二进制,以便稍后将其转换为浮点” - 但它已经是浮点数。您可以从字面上废弃所有这些代码。
-
嗯,不,我想将此数字转换为二进制,然后在二进制中我想执行 IEEE754,但我想手动执行此操作,我只需要知道二进制数
标签: python binary decimal point floating