二进制浮点D

2024-05-03 06:59:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个密码

m1=[]
def decimalToBinary(num, k_prec) : 

    binary = ""   
    Integral = int(num)  
    fractional = num - Integral 
    while (Integral) :    
        rem = Integral % 2
        binary += str(rem);  

        Integral //= 2

    binary = binary[ : : -1]  

    binary += '.'

    while (k_prec) : 

        fractional *= 2
        fract_bit = int(fractional)  

        if (fract_bit == 1) : 

            fractional -= fract_bit  
            binary += '1'

        else : 
            binary += '0'

        k_prec -= 1

    return binary  

if __name__ == "__main__" : 
    xr=([0.3,0.4,0.5])
    for i in xr:
        n = xr
        k = 32
        a=(decimalToBinary(n[i], k)) 
        m1.append(a) 

问题是,我有一个列表/数据,我想转换成二进制,但通过运行这个代码,我得到了这个错误

Traceback (most recent call last):

File "", line 59, in print(decimalToBinary(n[i], k))

TypeError: list indices must be integers or slices, not float Plus i want the binary converted data in an array .


Tags: inifbitnumintbinaryfractionalwhile
1条回答
网友
1楼 · 发布于 2024-05-03 06:59:34

您发布了太多的代码:该函数是不必要的,因为错误在参数格式中。看看这个:

xr=([0.3,0.4,0.5])
for i in xr: 
    n = xr
    print("n =", n, "\ti =", i)
    print(n[i])

错误:

n = [0.3, 0.4, 0.5]     i = 0.3
Traceback (most recent call last):
  File "so.py", line 5, in <module>
    print(n[i])
TypeError: list indices must be integers or slices, not float

错误消息告诉您,问题出在列表索引中。 你用了一个浮点数,这是非法的。我怀疑你想要的只是

a = decimalToBinary(i, k)

相关问题 更多 >