Python doctest在0.0!= -0.0上失败 - 是什么给出的?

时间:2009-05-21 15:01:40

标签: python

给出以下代码:

def slope(x1, y1, x2, y2):
    """
      >>> slope(5, 3, 4, 2)
      1.0
      >>> slope(1, 2, 3, 2)
      0.0
      >>> slope(1, 2, 3, 3)
      0.5
      >>> slope(2, 4, 1, 2)
      2.0
    """
    xa = float (x1)
    xb = float (x2)
    ya = float (y1)
    yb = float (y2)
    return (ya-yb)/(xa-xb)

if name_ == '__main__':
    import doctest
    doctest.testmod()

第二个doctest失败了:

Failed example:
    slope(1, 2, 3, 2)
Expected:
    0.0
Got:
    -0.0

但是,我们都知道-0.0 == 0.0。 doctest是否正在进行字符串比较以检查结果?为什么第二次测试失败?

1 个答案:

答案 0 :(得分:9)

失败,因为doctest执行字符串比较。它仅检查输出是否与在Python交互式解释器上执行代码时输出的输出相同:

>>> 0 / -2
-0.0

修改:以下referenced下的Daniel Lew链接提供了有关其工作方式的更多提示,以及您如何能够影响此行为。