首页 > 解决方案 > 在 sympy 中将浮点数转换为整数

问题描述

有没有一种快速的方法可以将实际上是整数的浮点数转换为 python 中的整数?例如:2.0*x+3.1,我想显示为2*x+3.1。我可以遍历表达式中的数字并一一检查if x = int(x)然后替换它们(或类似的东西),但我想知道是否有更快的内置方法来这样做。

谢谢!

标签: pythonsympy

解决方案


有几种方法可以做到这一点。您可以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

推荐阅读