我有一个类'sympy.core.add.Add'对象,我想将该对象中的所有数字四舍五入到2位数字。
给出:
2.96652814643838 * sin(x)+ 3.11758737898895 * sin(2 * x)
所需:
2.97 * sin(x)+ 3.12 * sin(2 * x)
有什么想法怎么做?
答案 0 :(得分:1)
尽管nfloat
会将所有数字转换为所需的有效数字,但是无法在表达式中全局舍入数字。但是expr.xreplace(Transform(lambda x: x.round(2), lambda x: isinstance(x, Float)))
可以工作。
>>> expr = 2.96652814643838*sin(x) + 3.11758737898895*sin(2*x)
>>> from sympy.core.rules import Transform
>>> expr.xreplace(Transform(lambda x: x.round(2), lambda x: isinstance(x, Float)))
2.97*sin(x) + 3.12*sin(2*x)