我有以下代码段...
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。
答案 0 :(得分:2)
某些浮点实现会在打印时并不总是显示的最低有效位中创建舍入。因此有可能你从浮动(e0 + e1)得到的东西是1.00000000001,而打印正在四舍五入。
(不能从样本中确定。)
答案 1 :(得分:1)
要比较浮点数,请始终测试一系列可接受的值,而不是直接比较相等性。所以对于你的断言,试试这个:
assert( abs(float(elem[0]+elem[1])-1.0) < 0.00005)
其中0.00005是被视为等效的值范围。