如果我们有123.82423992
这样的浮动数字,math.modf
就像这样:
>>> math.modf(123.82423992)
>>> (0.8242399199999966, 123.0)
我需要使用sympy
执行此操作,是否有sympy
版本?
答案 0 :(得分:3)
如果数字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)
。我无法评论哪个更好。