Перевод типа string в float Python

Есть переменная, которая записывает в себя результат некой формулы:

result=float(cmb1.get()*10+cmb2.get()+cmb3.get()*10+cmb4.get()*10)

Из нескольких ComboBox подаются значения не целые числа. При запуске программы выдаётся ошибка:

ValueError: could not convert string to float:'38.738.738.738.738.738.738.738.738.738.7100.1111111111111111111111'

Что я делаю не так?

Задача: Есть 4 ComboBox'а. На них выбираются числа. Например: 38.7, 100.11, 1, 1 (для каждого ComboBox'а соответственно). При нажатии кнопки эти числа должны считаться в вышеуказанную формулу и посчитать результат. Желательно результат округлить до целого (пока сам не сделал из-за ошибки)


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

Автор решения: Евгений

Если вам нужно посчитать сумму значений, вам нужно каждое значение отдельно перевести в float:

result = float(cmb1.get())*10 + float(cmb2.get()) + float(cmb3.get())*10 + float(cmb4.get())*10

Это связано с тем, что для строк оператор + означает конкатенацию (склеивание), а не арифметическое сложение, равно как и оператор * является оператором мультипликации, а не арифметического умножения:

2 + 2 == 4
'2' + '2' == '22'

2 * 3 == 6
'2' * 3 == '222'
→ Ссылка