Перевод типа 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'