Преобразовать дробь с числителем и знаменателем в двоичную - PullRequest
0 голосов
/ 24 октября 2018

Пару дней искал помощи, но не думаю, что есть какие-либо ответы на мой вопрос.Я уверен, что это просто, но я не смог заставить его работать.

Я пытаюсь создать функцию для преобразования дроби в двоичное представление.Я основал это на этой работе здесь: Как преобразовать дробь в двоичную?

def fraction_to_binary(p,q):
    binlist = []
    n = 1
    while p >0:
        binlist.append(p*2//q)
        if p*2//q == 0:
            p *=2
            n +=1
        else:
            p = p - (p*2//q)*2**n
            n +=1
    return binlist

Для моего примера я пытаюсь преобразовать 11/64 в двоичную.Мой результат:

fraction_to_binary(11,64)
[0, 0, 1, 1, 0, 1]

Фактический ответ [0, 0, 1, 0, 1, 1], поэтому я думаю, что я близок.

1 Ответ

0 голосов
/ 24 октября 2018

Вы неверно перевели Шаг 3 в вашем else случае: просто используйте p = p*2 - q.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...