@HelWorld

Как исправить неправильное сложение десятичных дробей при помощи 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, уже проверял.
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Попробуйте заменять десятичный знак с запятой на точку перед вычислениями.
Ответ написан
shurshur
@shurshur
Сисадмин, просто сисадмин...
Скорее всего, дело в том, что десятичный разделитель - это точка, а не запятая. А запятая тут превращает строку в кортеж двух чисел. Получается, что 5+5,1 это число 10 и число 1, а 5,1+5 - число 5 и число 6.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 23:39
3000 руб./за проект
30 апр. 2024, в 23:32
1500 руб./за проект
30 апр. 2024, в 22:44
500 руб./в час