python - 在 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
推荐阅读
- php - 更新mysql中的表数据
- android - 请求 Android 覆盖权限会导致根据 Android 版本显示不同的屏幕 - 这可以避免吗?
- javascript - 如何用中文文件名写入文件
- sas - sas datastep 循环计算新的数据行
- node.js - 如何在 Express.js 应用程序中设置多个视图文件夹
- python - 如何通过虚拟机连接到主机上的套接字服务器?
- reactjs - 有没有办法在保持我的最大值的同时为 recharts 轴设置大小均匀的刻度?
- mongodb - 如何接收一个数组,使用聚合框架比较其他两个数组?
- python - 从网站列表制作数据框
- kdb - 无法评估手动创建的相等〜解析树