Как сделать округление до того знака, когда попадается первая цифра больше "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'