【问题标题】:Binary Float Data二进制浮点数据
【发布时间】:2019-09-25 05:34:20
【问题描述】:

我有这个代码

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(最近一次调用最后一次):

文件“”,第 59 行,在 print(decimalToBinary(n[i], k))

TypeError:列表索引必须是整数或切片,而不是浮点数 另外我想要一个数组中的二进制转换数据。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 2016-05-01
      • 1970-01-01
      相关资源
      最近更新 更多