@kromaliy

Как преобразовать число в дробное?

Здравствуйте. Помогите решить задачку.

Имеется первое исходное число 0.0601 (оно может быть любое 0.3, 4, 0.03, 0.003 итд.)
И второе число без первых нулей и точки, к примеру 535 (оно то-же может быть любое)
Мне нужно преобразовать второе число по подобию первого, т.е. вывести 0.0535

По сути нули и точку перед числом перенести во второе число.

Сам писал функцию:
def prchislonull(chislo):
    if abs(chislo) < 0.000001:
        return 1000000000
    elif abs(chislo) < 0.00001:
        return 100000000
    elif abs(chislo) < 0.0001:
        return 10000000
    elif abs(chislo) < 0.001:
        return 1000000
    elif abs(chislo) < 0.01:
        return 100000
    elif abs(chislo) < 0.1:
        return 10000
    elif abs(chislo) < 1:
        return 1000
    else:
        return 1

print(535/prchislonull(0.601)) # работает
print(2429/prchislonull(0.02429)) # не работает

но эта функция работает не со всеми числами, и думаю вообще это полная дичь. Может есть более изящное решение?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
попробуй поработать с позицией первого не нуля вправо или влево от точки алгоритмически.
import math
def convert(a,b):
    p = math.floor(math.log10(a))
    if a < 1:
        result = '0.' + str(abs(p+1)*'0') + str(b)
        return result
print(convert(0.0601,535))
print(convert(0.00601,535))
print(convert(0.000601,535))

ключевая строчка кода
p = math.floor(math.log10(a))
она дает тебе позицию отрицательную или положительную.
Я думаю такая подсказка будет полезной, маленькая функция для примера работает не со всеми случаями (она представлена для примера). Но зная позицию первого не нуля от точки отрицательную в право и положительную влево, можно решить данную задачу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы