определение длины len и добавление в round
Как задать в len() так что он посчитал все значения после точки К примеру есть:
a = '0.005'
мы хотим получить длину после точки. Значит после точки длина 3 (005)
и узнав длину после точки в переменной a мы хотим из переменной b:
b = 0.011111
сказать что бы переменную b после точки округлило до значений (3) которую мы узнали в переменной a используя len
в итоге round должен округлить в переменной b плавающие точки до значения 3 и выдать результат:
b = 0.011
пытался так:
a1 = len(a)
b1 = round(b, a1)
но в этом случае a1 считает 4 значение и с самой точкой а мы хотели посчитать все значения которые после точки и вставить его в round
Ответы (3 шт):
1 вариант:
a = '0.005'
b = 0.011111
a_reversed = a[::-1] # перевернутая строка a
dot_position = a_reversed.find('.') # находим индекс . в строке a_reversed
b1 = round(b, dot_position)
Можно сократить до:
b1 = round(b, a[::-1].find('.'))
2 вариант:
a = '0.005'
b = 0.011111
a.split('.') # разбиваем строку a по . и получаем список ['0', '005']
dot_position = len(a.split('.')[1]) # получаем длину второго элемента списка '005'
b1 = round(b, dot_position)
Сокращаем:
b1 = round(b, len(a.split('.')[1]))
Все у вас хорошо, только вместо первой строки вашего
a1 = len(a)
b1 = round(b, a1)
примените
__, after = a.split(".")
а1 = len(after)
Объяснение:
a.split(".") сделает из строки a список из 2 строк: части перед точкой и части после точки.
Из этого списка мы можем выбрать индивидуальные элементы распакованием
before, after = ....
но т.к. before (часть перед точкой) нас вообще не интересует, в соответствии с хорошим стилем мы для него применим специальное имя __ (один или 2 знака подчеркивания):
__, after = a.split(".")
Из не предложенных в других ответах вариантов есть ещё такой:
a = '0.005'
b = 0.011111
b = round(b, len(a) - a.rfind('.') - 1)
print(b)
Вывод:
0.011