TypeError: can't round symbolic expression

TypeError: can't round symbolic expression

我编写了一个函数,在传递参数时计算导数的值,但是当传递带有 abs() 的函数时,结果是符号而不是浮点数。但是,结果我需要四舍五入到小数点后两位,我不知道如何解决它

from sympy import * 
import numpy as np

global x, y, z, t 
x, y, z, t = symbols("x, y, z, t")    
def req1(f, g, a): 

    dfg = diff(f + g, x)

    res = round(dfg.subs(x, a), 2)

    return res

round 是一个数字 Python 函数。它不了解 sympy 对象。

要获得常量 sympy 表达式的数值近似值,您可以使用 evalf():

from sympy import sqrt, symbols

x = symbols('x')
f = sqrt(x)
f.subs(x, 2)  # sqrt(2)
f.subs(x, 2).evalf()  # 1.41421356237310

一旦结果为数字,您可以使用 Python(或 numpy 的)数字函数:

round(f.subs(x, 2).evalf(), 2)  # 1,41

Sympy 还有一个 round() 函数,它首先进行数值近似,然后进行舍入。 (Sympy的round不能单机调用,需要调用为expression.round().

f.subs(x, 2).round(2)  # 1.41