【发布时间】:2014-05-26 10:54:47
【问题描述】:
我一直认为 NaN 有两种:安静和信号。
但后来我意识到NAN 宏的计算结果都不。
在 Visual C++ 中,std::numeric_limits<float>::quiet_NaN() 显示为 1.#QNAN000。
在 Visual C++ 中,std::numeric_limits<float>::signaling_NaN() 显示为 1.#QNAN000。
然而,在 Visual C++ 中,NAN 显示为 -1.#IND0000... 两者都不是。
那么,
NAN常量是什么类型的 NaN?是信号还是非信号?什么时候应该使用
NAN而不是其他的,什么时候应该避免使用它,为什么?
【问题讨论】:
-
有两个以上的 NaN 值。特别是,有数百万个信号 NaN 和数百万个安静的 NaN。 They print in different ways.
-
@RaymondChen:我认为您在我重复了 3 次的问题中错过了 "kinds of NaN" 短语。但是谢谢你的链接,我会看看你的博客,看看它是否在谈论 NaN 的“种类”。
-
quiet_NaN()返回 a 安静的 NaN,但还有其他的。NAN宏返回不同的安静 NaN。说 NaN 既不是quiet_NaN()也不是signaling_NaN()并不意味着它也不是。这只是一个安静的 NaN,与quiet_NaN返回的安静 NaN 不同。如果你想知道 NAN 是否在发信号,the documentation says it is quiet。