Python 以分数形式返回公式的结果(如果可能),而不是其数值(即5/6而不是0.8333334)

Python 以分数形式返回公式的结果(如果可能),而不是其数值(即5/6而不是0.8333334),python,Python,我正在Jupyter实验室环境中使用Python 如果我定义此函数: def f(n): return ((n - 1) + 1/2) / n 当我执行此命令时: f(3) 函数返回0.8333334 相反,我宁愿得到5/6。您应该使用以下软件包: 将打印 5/6 您可以使用分数模块 from fractions import Fraction fraction = Fraction(0.8333333333333334).limit_denominator(10) 这回

我正在Jupyter实验室环境中使用Python

如果我定义此函数:

def f(n): 
    return ((n - 1) + 1/2) / n
当我执行此命令时:

f(3) 
函数返回
0.8333334

相反,我宁愿得到
5/6

您应该使用以下软件包:

将打印

5/6

您可以使用
分数
模块

from fractions import Fraction 

fraction = Fraction(0.8333333333333334).limit_denominator(10)

这回答了你的问题吗?可能值得理解的是,
1/2
(以及类似内容)不是类型中的分数,而是操作中的分数。它的字面意思是计算“1除以2”。当你说你“宁愿得到
5/6
”的结果时,你认为(或希望得到)是什么类型的
5/6
?天真地说,
5/6
在Python中是0.8333334。我的想法与此类似:您可能正在寻找符号计算,例如由
symphy
提供的。您可能会不时得到大量分数,因此可以使用该方法。限制分母()避this@en_lorithai因为我不使用浮点除法,所以只有当
n
也是大量的时候才会产生大量的分母,这是意料之中的。在越来越多的人使用的python 3中,浮点除法是默认的。应该提到。@en_loritai我的答案中没有划分。谢谢@Selcuk,我还发现了另一种方法:从sympy导入符号,sympify n=symbols('n')f=sympify(((n-1)+1/2)/n)打印(f.subs(n,3))
from fractions import Fraction 

fraction = Fraction(0.8333333333333334).limit_denominator(10)