Ошибка распаковки в функции, которая конвертирует float в двоичный файл - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь создать функцию 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 Ответ

1 голос
/ 21 сентября 2019

Функция convertDecimal возвращает 0, когда n = 0. Так что «.»разделить.Вы можете исправить это, приведя возвращаемое значение к числу с плавающей точкой

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