我发现这种行为很奇怪
> [1, 2, 3, 'a', 'b', Float::NAN].include? Float::NAN
false
我当时试了这个并且感到惊讶
> Float::NAN == Float::NAN
false
因此,要检查Float::NAN
,我不得不求助于
> [1, 2, 3, 'a', 'b', Float::NAN].any? { |i| i.is_a?(Float) && i.nan? }
true
所以,
Float::NAN
?Float::NAN
会出现这种奇怪的行为?答案 0 :(得分:2)
要检查,您可以使用:
[1, 2, 3, 'a', 'b', Float::NAN].any?{|item| item.respond_to?(:nan?) && item.nan?}
(或try
,如果您使用Rails)
至于 why ,请查看What is the rationale for all comparisons returning false for IEEE754 NaN values?