Python 正确地添加分数

Python 正确地添加分数,python,Python,我想用分数做一些计算,把所有的数字都保留为分数,永远不要转换成小数 例如1/2+1/4=3/4。我们可以在Python中实现这一点,例如,如果需要,可以使用来自Fracts类的函数:Fracts(1/2+1/4)或Fracts(1/2)+Fracts(1/4) 但是我不能让Python给我1/2+1/3的正确分数,因为1/3是非终止小数。分数(1/2+1/3)不起作用,分数(分数(1/2)+分数(1/3))也不起作用 ***编辑:我之所以使用分数(1/2)而不是分数(1,2),是因为在我的代码中

我想用分数做一些计算,把所有的数字都保留为分数,永远不要转换成小数

例如1/2+1/4=3/4。我们可以在Python中实现这一点,例如,如果需要,可以使用来自Fracts类的函数:Fracts(1/2+1/4)或Fracts(1/2)+Fracts(1/4)

但是我不能让Python给我1/2+1/3的正确分数,因为1/3是非终止小数。分数(1/2+1/3)不起作用,分数(分数(1/2)+分数(1/3))也不起作用

***编辑:我之所以使用分数(1/2)而不是分数(1,2),是因为在我的代码中,我知道我只使用分数,但我不知道分数的分子和分母,只知道分数本身。

当然可以

>> from fractions import Fraction
>> Fraction(1, 2) + Fraction(1, 3)
Fraction(5, 6)

您的符号似乎是问题所在。请注意:

>>> Fraction(1/3) == Fraction(1, 3)
False

因此:

>>> Fraction(1/2) + Fraction(1/3)
Fraction(15011998757901653, 18014398509481984)  # almost 5/6 but not quite

这是因为当您键入
Fraction(1/3)
时,首先计算
1/3
,然后将其传递到
Fraction
。相反,
Fraction(1,3)
只是使用
1
作为分子,使用
3
作为分母来创建一个分数。

您可以这样使用分数函数

from fractions import Fraction
f = Fraction(1,2) + Fraction(1,3)
print (f)

输出:
分数(5,6)

分数(1,2)+分数(1,3)有什么问题?我对你怎么知道分数有点困惑,“但不知道分子或分母”。你能详细说明一下吗?分数(1,3)==1/3仍然返回False。
from fractions import Fraction
f = Fraction(1,2) + Fraction(1,3)
print (f)