小编典典

在 C++ 中检查双精度(或浮点数)是否为 NaN

all

有 isnan() 函数吗?

PS.:我在MinGW(如果这有什么不同的话)。

我通过使用 isnan() from 解决了这个问题<math.h>,它在 中不存在<cmath>,我一开始是在#includeing 中。


阅读 122

收藏
2022-03-22

共1个答案

小编典典

根据 IEEE 标准,NaN 值具有奇数特性,即涉及它们的比较 总是 错误的。也就是说,对于浮点数 f, 当 f 为 NaN时才f != f为真。 __

请注意,正如下面的一些评论所指出的,并非所有编译器在优化代码时都尊重这一点。

对于任何声称使用 IEEE 浮点的编译器,这个技巧 应该可以 工作。但我不能保证它 在实践中发挥作用。如果有疑问,请检查您的编译器。

2022-03-22