【问题标题】:code to convert this number (9.10938291*10**-31) to binary (Python)将此数字 (9.10938291*10**-31) 转换为二进制 (Python) 的代码
【发布时间】: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


【解决方案1】:

对于ints,bin(numero) 有效。对于floats 小于1,可以试试这个:

bin(int(1/(numero)))

这将为您提供数字的倒数 (1/x) 并将其转换为 int,然后您可以稍后再次反转。

【讨论】:

    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2020-03-22
    • 2022-08-16
    • 1970-01-01
    • 2014-11-07
    • 2018-05-14
    相关资源
    最近更新 更多