我正在尝试将数学表达式转换为约化分数。当使用 fractions 模块中的 Fraction 函数时,我得到了一个未减少的分数。
代码
from fractions import Fraction
print(Fraction(1 + 1/(2 + 1/2)))
返回 3152519739159347/2251799813685248
,减少到 7/5
。
我希望我的代码返回减少的分数。
最佳答案
这是由于 float 学的不精确。
虽然 1 + 1/(2 + 1/2)
确实应该减少到 7/5
(或 1.4
) , 小数1.4
不能用 float 精确表示
>>> '{:030f}'.format(1.4)
1.39999999999999999999911182158029987
这种不准确性导致它产生与 7/5
如果你想要精确的分数数学,你需要使用分数来计算整个方程,而不是将它与 float 混合。
关于python - 分数函数返回未减少的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183601/