Sympy.Rational 不能正确处理 1/3 这样的分数

Sympy.Rational doesn't work correctly with fractions like 1/3

我有这个代码:

import sympy as smp
a = smp.Rational(1/3)
print('1/3: ', a)
a = smp.Rational(1/6)
print('1/6: ', a)
a = smp.Rational(1/2)
print('1/2: ', a)
a = smp.Rational(1/4)
print('1/4: ', a)

这个结果:

1/3:  6004799503160661/18014398509481984
1/6:  6004799503160661/36028797018963968
1/2:  1/2
1/4:  1/4

sympy 无法正确处理不同的分数,例如 1/3、1/5、1/6 等。 我该如何解决这个问题?

There is an example

当你写 1/3 时,它会立即执行除法。所以

sympy.Rational(1/3)

相同
sympy.Rational(6004799503160661/18014398509481984)

因为在 Python,

1/3 == 6004799503160661/18014398509481984

您必须将分子和分母传递给 Rational 工厂:

sympy.Rational(1, 3)