Как исправить неправильное сложение десятичных дробей при помощи sympify в Python?
Я делаю калькулятор. Суть заключается в том, что сначала я добавляю в строку все символы с нажатых кнопок, а потом при помощи sympify выполняю действия с числами в строке. И обратно возвращается результат снова с типом str.
Это всё работает нормально при одном условии, если я либо не добавляю числа с запятой, либо добавляю только одно число с запятой самым последним. Пример: 5 + 5,1 = 10,1. Но если я добавляю в начало десятичную дробь, то все остальные числа складываются уже к цифре после запятой. Пример: если я напишу 5,1 + 5, то получиться 5,6. Другой пример: если я напишу 5,1 + 5,1, то получиться 5,6,1.
Я лично понимаю это так: sympify отделяет число до запятой от чисел после запятой, и т.к. математический знак находиться тоже после запятой, следовательно производит действия только с числами после запятой, а перед запятой число вообще не трогает. Вопрос в том, как сделать так, чтобы дроби считались нормально: целые числа с целыми, числа после запятой с числами после запятой?
Решение проблемы по типу: превратить число с запятой в float не сработает, потому что мне нужно его оставить строкой. И делать свою функцию по счёту я не собираюсь, потому что это ещё с 10-ток строчек кода, и это всё не будет работать так идеально, как одна строчка кода с модулем sympy, уже проверял.
Я это пробовал, просто в строке появлялось слишком много нулей, и я думал, что sympify вообще не вычисляет значения с точкой. Однако только сейчас до меня дошло, что нужно просто убрать все конечные нули. В итоге теперь это всё работает так, как должно. Спасибо за ответ.
Скорее всего, дело в том, что десятичный разделитель - это точка, а не запятая. А запятая тут превращает строку в кортеж двух чисел. Получается, что 5+5,1 это число 10 и число 1, а 5,1+5 - число 5 и число 6.