C++标准委员会(终于?)在这个问题上听取了数值计算学家的意见。 在C++11之前,习惯用法
x != x
确实使用了检查NaN的方式。对于浮点数没有其他类别的值适用这种方法,但它并不是特别好。首先,一些NaN会引发异常。它也容易受到错误的重构影响。您还可能假定某些浮点标准,例如常见的IEEE754。
从C ++ 11开始,最好使用std::isnan
。
x != x
,我会将其改为false,以便它出现错误并且作者学会使用更清晰的构造,比如 isnan
。 - Jeffrey