Android: открытие счетчика с помощью кнопки

Я пытаюсь преобразовать число с плавающей запятой в двоичное представление; как я могу этого добиться? Моя цель, однако, не ограничиваться 2 м, поэтому я надеюсь на что-то, что можно было бы легко расширить до любой базы (3, 4, 8) и т. Д.

У меня пока есть простая реализация для целых чисел :

import string

LETTER = '0123456789' + string.ascii_lowercase
def convert_int(num, base):
    if base == 1:
        print "WARNING! ASKING FOR BASE = 1"
        return '1' * num if num != 0 else '0'

    if base > 36: raise ValueError('base must be >= 1 and <= 36')

    num, rest = divmod(num, base)
    rest = [LETTER[rest]]
    while num >= base:
        num, r = divmod(num, base)
        rest.append(LETTER[r])
    rest.reverse()
    return (LETTER[num] if num else '') + ''.join(str(x) for x in rest)

любая помощь приветствуется :)

редактировать:

def convert_float(num, base, digits=None):
    num = float(num)
    if digits is None: digits = 6

    num = int(round(num * pow(base, digits)))
    num = convert_int(num, base)
    num = num[:-digits] + '.' + num[:digits]
    if num.startswith('.'): num = '0' + num
    return num

это верно? почему у меня такое поведение?

>>> convert_float(1289.2893, 16)
'509.5094a0'
>>> float.hex(1289.2983)
'0x1.42531758e2196p+10'

ps Как преобразовать число с плавающей запятой в двоичное?

Я читал это обсуждение, но не получил ответа .. Я имею в виду, это работает только для 0,25, 0,125? и я не понимаю фразу «должно быть в обратном порядке» ...

6
задан Community 23 May 2017 в 11:54
поделиться