Проверьте, есть ли в списке n последовательных значений - PullRequest
1 голос
/ 19 июня 2020

Я делаю базовый преобразователь, который включает точку счисления с помощью Python. Я пытаюсь сделать так, чтобы результат с плавающей точкой заканчивался сам, если он видит четыре или более 0 подряд. Однако я не знаю, как это сделать. Это фрагмент того, что у меня есть на данный момент:

import math

num = 0.25
base = 4

x = list()

b = 0
c = 0
d = 0
a = 0

if isinstance(num, float) == True:
    x.append('.')
    while num != 0 or d <= 100:
        b = math.floor(num / (base ** a))
        x.append(b)
            
        num = num - (b * (base ** a))
        d += 1
        a -= 1

print(*x, sep="")

Хотя значения для этого фрагмента фиксированы, если бы я изменил num на 10.4, а базу на 10, я бы получил 10.400000000000000333066907387546967... (200 цифр опущены). Я получаю около 10-15 правильных цифр, но после цепочки нулей появляется большое количество "мусорных" чисел.

Если я позволю num = 2.5 и base = 2, то я получу 10.10000000000000000000000, со множеством дополнительных нулей в конце. Мне нужно очистить эти дополнительные цифры после того, как будут видны четыре последовательных 0. Есть ли способ сделать это?

1 Ответ

2 голосов
/ 19 июня 2020

Все, что вам нужно сделать, если 'num' - это число, вызывающее проблему:

#form the output of the given code, 'x' has the value in the form of a list
#converting the list to string:
num=""
for digit in x:
    num+=str(digit)
y=float(num)
print (format(num, '.4f'))

У меня это сработало! Надеюсь, это сработает для вас ...

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