繁体   English   中英

在 sympy 中将浮点数转换为整数

[英]Turn floats to integers in sympy

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

谢谢!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM