江添氏 C++ 入門にまた誤りを見つけました https://ezoeryou.github.io/cpp-intro/#nannot-a-number > int main() { > double NaN = std::numeric_limits<double>::quiet_NaN() ; > // true > bool b = NaN != 0.0 ; > // false > bool a = NaN == 0.0 ; > bool c = NaN == NaN ; > bool d = NaN != NaN ; > bool e = NaN < 0.0 ; >} こちらで試してみると、bool c = NaN != NaN の値は true でした。 https://ideone.com/dzmyeq
>整数であれば、'a == b'がfalseであるならば、'a != b'なのだと仮定してもよいが、こと浮動小数点数の場合、NaNの存在があるために必ずしもそうとは限らない。 残念ながら、a, b, のいずれかまたは両方が Nan であっても、a == b が false ならば a != b true であることを確かめました