Я хочу сделать большое число более читаемым, но если число имеет десятичную часть, оно не может преобразовать его.
first_number = self.lineEdit.text().replace(",","")
second_number = self.lineEdit_2.text().replace(",","")
a = float(first_number)-float(second_number)
a = "{:,}".format(a)
self.res.setText(a)
Если вы хотите сделать большое число более читаемым, но сохранить его десятичную часть неповрежденной, вы можете изменить свой код, чтобы форматировать только целую часть числа «нет». используя float.is_integer() с таким условием:
first_number = self.lineEdit.text().replace(",", "")
second_number = self.lineEdit_2.text().replace(",", "")
a = float(first_number) - float(second_number)
# Check if the number has a decimal part
if a.is_integer():
formatted_number = "{:,.0f}".format(a)
else:
formatted_number = "{:,.2f}".format(a)
self.res.setText(formatted_number)
Другой подход — разделить число на целую и десятичную части, отформатировать целую часть, а затем снова объединить их вместе, так:
first_number = self.lineEdit.text().replace(",", "")
second_number = self.lineEdit_2.text().replace(",", "")
a = float(first_number) - float(second_number)
# Split the number
integer_part, decimal_part = str(a).split('.')
formatted_integer_part = "{:,.0f}".format(float(integer_part))
# Concatenate the integer and decimal parts back together
formatted_number = formatted_integer_part + '.' + decimal_part
self.res.setText(formatted_number)
Не показывая входные и (ожидаемые) выходные значения, невозможно сказать, что может быть не так с вашим кодом.