Python:为什么我的'不到'测试失败了?

时间:2014-02-13 20:32:42

标签: python

我有以下程序:

def eigen(a, b, c, d, e, f):
    epsilon = 1E-9
    a = abs(float(a*e+b*f)/float(c*e+d*f) - float(e)/float(f))
    print a, epsilon
    print a < epsilon
    print abs((a*e+b*f)/float(c*e+d*f) - e/float(f)) < epsilon

打印:

0.0 1e-09
True
False

a,b,c,...,f = 3, 1, 1, 3, 4, -4

的值时

我预计最后两行都打印True因为我认为它们是公平的陈述。你能告诉我发生了什么吗?

感谢您的时间。

亲切的问候,

的Marius

1 个答案:

答案 0 :(得分:10)

问题在于

a = abs(float(a*e+b*f)/float(c*e+d*f) - float(e)/float(f))

a指定一个不同的值,这会影响后面的计算:

print abs((a*e+b*f)/float(c*e+d*f) - e/float(f)) < epsilon
#          ^ This is no longer the original a