我有一些算法出于某种原因会吐出 NaN,我都想暂时过滤掉这些不好的结果,稍后再去找出问题所在。因此,我需要检查一个值是否为 NaN,我该怎么做?
我想我可以使用 NaN 是唯一不等于自身的值的技巧,所以我编写了以下函数
(defn NaN?
"Test if this number is nan"
[x]
; Nan is the only value for which equality is false
(false? (= x x)))
如果我问这行得通(NaN? Double/NaN Double/NaN
)。但是,如果值 NaN 在某些数据结构中(就像这种情况一样),并且在某种意义上都已准备好进行评估,那么这不起作用。例如
(def test Double/Nan)
(NaN? test)
返回假。