Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何用十进制格式表示阶乘的除法?_Python_Factorial_Floating Point Conversion - Fatal编程技术网

Python:如何用十进制格式表示阶乘的除法?

Python:如何用十进制格式表示阶乘的除法?,python,factorial,floating-point-conversion,Python,Factorial,Floating Point Conversion,我试图得到拉盖尔多项式的系数,这涉及到因子的分解,这是我的代码: Coeficientes=[] def Ln(n): for m in xrange(n+1): Coeficientes.append(((-1)**m *factorial(n))/(factorial(n-m)*factorial(m)*factorial(m))) print "Coeficiente de grado", m, ":", Coeficientes[m] 问题是当我必须得到

我试图得到拉盖尔多项式的系数,这涉及到因子的分解,这是我的代码:

Coeficientes=[]
def Ln(n):
    for m in xrange(n+1):
        Coeficientes.append(((-1)**m *factorial(n))/(factorial(n-m)*factorial(m)*factorial(m)))
    print "Coeficiente de grado", m, ":", Coeficientes[m]
问题是当我必须得到值为0.5的系数时,我得到了0

范例

Ln(2)
结果:

Coeficiente de grado 0 : 1
Coeficiente de grado 1 : -2
Coeficiente de grado 2 : 0
但我必须说:

Coeficiente de grado 2 : 0.5

如果我写Ln(2.),它会返回一个错误:需要整数参数,得到float

您需要将其中一个数字强制转换为float,以防止一切被视为整数:
(-1)**float(m)
(-1.0)**m

Coeficientes=[]
def Ln(n):
    for m in xrange(n+1):
        Coeficientes.append(((-1)**float(m) *factorial(n))/(factorial(n-m)*factorial(m)*factorial(m)))
        print "Coeficiente de grado", m, ":", Coeficientes[m]
当对整数进行除法时,Python将把结果转换为int。例如,
7/5
将导致
1
。但是
7.0/5
导致
1.4


十进制更精确,避免了舍入误差。请参见您得到了
梯度系数2:0
而不是
梯度系数2:0.5
,因为
阶乘
只接受整数,另一种方法是使用
数学.gamma(x)

gamma
是阶乘函数对实数的扩展。(如果您使用的是python 2.7或3.2)


请参见

您的问题在函数
阶乘
中。这只能对正整数求值。您应该使用
math.gamma(n)
来计算任何实数(非整数或整数)

从数学导入gamma
打印((-1)**m*伽马(n))/(伽马(n-m)*伽马(m)*伽马(m)))

当我写Ln(2.0)时,它也会返回错误,因为“factorial”只接受整数:(@DianaPineda-我太仓促了。只有一点需要转换为float:
(-1)**float(m)
@DianaPineda也许更好的链接是谢谢,我没有thought@DianaPineda,如果有帮助,请标记我的答案,我将获得更高的票数。谢谢:'D