我想对分数进行一些计算,将所有数字都保留为分数,并且永远不要转换为小数。
例如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)是因为,在我的代码中,我知道我仅使用分数,但我不知道分数的分子和分母只是分数本身。
答案 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