在看 叶文彬 大神的ELisp教程,看到基本数据类型之一 ── 数字里面比较两个浮点数是否相等的时候,给了一个函数:
(defvar fuzz-factor 1.0e-6)
(defun approx-equal (x y)
(or (and (= x 0) (= y 0))
(< (/ (abs (- x y))
(max (abs x) (abs y)))
fuzz-factor)))
(approx-equal foo bar)
有个疑问,上面(abs (- x y))
得出后为什么还要除 (max (abs x) (abs y))
啊?
直接让(abs (- x y))
和 fuzz-factor
比较不就行了?
是我有什么数学概念不了解?请教下坛子里的各位一下:pray: