内部和外部不同的分工行为?

时间:2015-02-22 12:47:03

标签: python-2.7

我正在研究一个功能,并且还有一些可疑的东西。 有人可以解释这种奇怪吗?为方便起见,以下是您可能需要的参数:

var1,var2,df1,df2,n1,n2 = .05, .08, 149, 164, 150, 165

num = float(var1/float(n1) + var2/float(n2))**2

den=float((var1**2/float(n1**2 * df1)) + (var2**2/float(n2**2 * df2)))

num/den
Out[44]: 307.19879975167265
num
Out[48]: 6.694214876033057e-07
den
Out[49]: 2.1791149188878324e-09

df_two_sampled_welch(.05, .08, 150, 165)
6.69421487603e-07
2.18790880087e-09
Out[50]: 305.9640727875991

以上是上述功能:

def df_two_sampled_welch(var1, var2, n1, n2):
    df1, df2 = n1-1, n2-2
    num = float(var1/float(n1) + var2/float(n2))**2
    den = float((var1**2/float(n1**2 * df1)) + (var2**2/float(n2**2 * df2)))
    print num
    print den
    return num/den

为什么内部的den不等于?

请不要告诉我

__future__ import division 

会解决这个问题。

1 个答案:

答案 0 :(得分:1)

如果您还print变量numden,您会发现它们并没有不同。 python控制台只使用不同的数字格式来显示变量的值。

num/dev的差异来自于在函数内部更改df1df2的值。

评论df1, df2 = n1-1, n2-2,您将获得相同的结果或使用以下内容:

df1, df2 = n1-1, n2-1