Как сделать округление до того знака, когда попадается первая цифра больше "0"?

Есть числа меньше единицы, например:

0.00084689,    
0.0000642385

Как написать метод округления, чтобы округление происходило до того знака, когда попадается первая цифра больше "0", чтобы в итоге получить:

0.0008    
0.00006 

Ответы (3 шт):

Автор решения: Артем

Предлагаю пройтись по str(num) и определить НЕ 0, тогда и посчитать, на каком она месте, после чего через round(num, no_null) сделать округление

→ Ссылка
Автор решения: Andrey Belyaev

Такую штуку удобно делать через регулярные выражения. Преобразуем число в строку, находим вначале все нули по максимуму, определяем их количество и обрезаем строку до нужной длины. Затем конвертируем обратно в число

Пример на Python:

import re

def my_round(num):
    to_string = "{:.100f}".format(num)   # comvert to string
    result = re.match(r'0\.0+', to_string)   # finde pattern 0.000...
    sero_list_len = len(result.group(0)) # get length of zero list
    cuted_string = to_string[:sero_list_len+1] # cut string
    return float(cuted_string) # convert to float

num = 0.00084689  
print (my_round(num))
→ Ссылка
Автор решения: SergFSM

попробуйте потестировать такую регулярку:

from re import sub

num = 0.0000056006000288

res = sub(r'([1-9]\d)(\d)*$',lambda m: str(round(int(m[1])/10)), f'{num:.10f}')

print(res)  # '0.000006'
→ Ссылка