比较sum和constant之间的相等性

时间:2014-07-30 02:50:42

标签: python debugging numpy

我有以下代码段...

try:
    assert(float(elem[0]+elem[1])==1.0)
except AssertionError:
    print float(elem[0]+elem[1]), elem[0]+elem[1]

...其中elem是一个两元素numpy数组(elem [0]和elem [1]的类型为numpy.float64)。对于我的数组,上面的代码总是打印...

1.0, 1.0

...对stdout,我无法弄清楚为什么。如果有人可以提供一些指导,我将不胜感激。如果需要更多信息,请告知我们。

编辑:

elem [0]的值为0.168270720826,elem [1]的值为0.831729279174。

2 个答案:

答案 0 :(得分:2)

某些浮点实现会在打印时并不总是显示的最低有效位中创建舍入。因此有可能你从浮动(e0 + e1)得到的东西是1.00000000001,而打印正在四舍五入。
(不能从样本中确定。)

答案 1 :(得分:1)

要比较浮点数,请始终测试一系列可接受的值,而不是直接比较相等性。所以对于你的断言,试试这个:

assert( abs(float(elem[0]+elem[1])-1.0) < 0.00005)

其中0.00005是被视为等效的值范围。