Python适当添加分数

时间:2018-12-19 13:00:03

标签: python

我想对分数进行一些计算,将所有数字都保留为分数,并且永远不要转换为小数。

例如1/2 + 1/4 = 3/4。例如,如果需要,我们可以使用分数类中的函数在Python中执行此操作:Fraction(1/2 + 1/4)或Fraction(1/2)+ Fraction(1/4)。

但是我无法让Python为我提供1/2 + 1/3的正确分数,因为1/3是一个无终止的小数。分数(1/2 + 1/3)不起作用,分数(Fraction(1/2)+ Fraction(1/3))也不起作用。

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

2 个答案:

答案 0 :(得分:4)

当然可以。

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

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

>>> Fraction(1/2) == Fraction(1, 2)
True

同时

>>> 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作为分子和{{1}}作为分母来创建分数。

答案 1 :(得分:0)

您可以通过这种方式使用分数功能。

Fraction(5,6)

输出:shell=True