Превратить поплавки в целые числа в симпы - PullRequest
0 голосов
/ 19 марта 2020

Есть ли быстрый способ превратить числа с плавающей точкой, которые на самом деле являются целыми числами, в целые числа в python? Например: 2.0*x+3.1, я хотел бы выглядеть как 2*x+3.1. Я мог бы oop просмотреть числа в выражении и проверить одно за другим if x = int(x), а затем заменить их (или что-то в этом роде), но мне было интересно, есть ли более быстрый встроенный метод для этого.

Спасибо!

1 Ответ

2 голосов
/ 19 марта 2020

Есть несколько способов сделать это. Вы могли бы nsimplify(expr, rational=True), но это изменит 3.1 на 31/10, и тогда вам придется отменить это. Использование replace не заменяет вещь, которая проверяется как равная. Так что единственное известное мне решение - это пользовательская функция:

>>> def intify(expr):
...  floats = S(expr).atoms(Float)
...  ints = [i for i in floats if int(i) == i]
...  return expr.xreplace(dict(zip(ints, [int(i) for i in ints])))
...
>>> intify(2.0*x+3.1)
2*x + 3.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...