在将float转换为二进制的函数中解压缩错误

时间:2019-09-21 15:00:33

标签: python python-3.x floating-point binary unpack

我正在尝试制作一个带浮点数的Python函数,并将其转换为带有二进制数的字符串(也考虑小数部分,用点分隔),但是对于某些值-例如0.5、0.25 ,0.10、0.05、0.05,...-会出现以下错误:

line 7, in floatToBinary integerPart, fractionalPart = str((convertDecimal(fractional))*2).split(".")
ValueError: Not enough values ​​to unpack (expected 2, got 1)

功能:

def floatToBinary(floatNumber, decimalPlaces):
    integerPart, fractionalPart = str(floatNumber).split(".")
    integerPart = int(integerPart)
    fractionalPart = int(fractionalPart)
    result = bin(integerPart).lstrip("0b") + "."
    for i in range(decimalPlaces):
        integerPart, fractionalPart = str((convertDecimal(fractionalPart))*2).split(".")
        fractionalPart = int(fractionalPart)
        result += integerPart
    return result

def convertDecimal(n):
    while n > 1:
        n /= 10
    return n

希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

当n = 0时,函数convertDecimal返回0。因此没有'。'。分开。 您可以通过将返回值强制转换为float

来解决此问题
def convertDecimal(n):
    while n > 1:
        n /= 10
    return float(n)