python 的内置模块中 math.modf 的 sympy 版本是什么?

What is sympy version of math.modf in python's built-in module?

当我们有一个像 123.82423992 这样的浮点数时,math.modf 像这样:

>>> math.modf(123.82423992)
>>> (0.8242399199999966, 123.0)

我需要用 sympy 做那个操作,有这个的任何 sympy 版本吗?

如果n是正数,可以用Mod(n, 1)floor(n)

对于负数,由于 SymPy 中的 mod 和 floor(使用 Python 约定)处理负数参数的方式,您需要使用 1 - Mod(n, 1)floor(n) + 1.

您可以使用 Piecewise.

将这些组合成单个表达式
Piecewise((Mod(n, 1), n >= 0), (1 - Mod(n, 1), n < 0))
Piecewise((floor(n), n >= 0), (1 + floor(n), n < 0))

编辑:您也可以使用 frac(n) 而不是 Mod(n, 1)。我无法评论哪个更好。