您的定义有两个问题:
缺少 *
将尝试除以零,如果x + y == 0.0
(其中涵盖了可能是常见的情况x == y == 0.0
)
尝试以下方法:
define approx_Equal(x, y, tolerance=0.001):
return abs(x-y) <= 0.5 * tolerance * (x + y)
编辑:请注意需要使用<=
而不是<
…来使x == y == 0.0
案例正常工作。
我不会尝试覆盖 ==
编辑2:您写道:
世界上没有人会想对浮点数使用默认==。为什么甚至在语言中也是如此?
没门?假设您有一个返回浮点数的函数,并且对算法产生了很大的兴趣,该算法将更快和/或更优雅地产生相同的答案;你如何测试呢?