Я делаю базовый преобразователь, который включает точку счисления с помощью 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. Есть ли способ сделать это?