IND和NAN号有啥区别
Posted
技术标签:
【中文标题】IND和NAN号有啥区别【英文标题】:What is the difference between IND and NAN numbersIND和NAN号有什么区别 【发布时间】:2013-02-23 16:01:18 【问题描述】:NAN 值表示非数字,IND 值表示不确定数字。但这两者有什么区别。我们如何在 c++ 中表示两者。
【问题讨论】:
IND?还是INF? INF 是“无限”的标准。 【参考方案1】:但这两者有什么区别。
它们是同一个东西。一些平台选择将非数字显示为NaN
的某个变体,而其他平台选择将其显示为IND
的某个变体。
我们如何在 c++ 中同时表示两者。
std::numeric_limits<double>::quiet_NaN()
(或float
或long double
,如果您愿意的话)。
【讨论】:
显然,它们本身并不相同。在 Microsoft 平台上,IND 似乎是 NaN 的一个特例。具体来说,对于IND,指数为0xFF,尾数为0x400000。任何其他非零尾数都会给出 NaN。【参考方案2】:如果您的操作生成的正数大于双精度数,则该操作将在 Windows 上返回 1.#INF
,在 Linux 上返回 inf
某些运算没有数学意义,例如取负数的平方根。sqrt(-1.0)
和 log(-1.0)
都会返回 NaN,即“非数字”的“数字”的通用术语”。
Windows 将 NaN 显示为 -1.#IND
(“IND”表示“不确定”),而 Linux 显示 nan
。其他会返回 NaN
的操作包括 0/0、0*∞ 和 ∞/∞。
Refernce Link1
Refernce Link2
【讨论】:
不是 Windows 与 Linux,而是编译器的标准库决定了 NaN 的显示方式。 "某些运算没有数学意义" 运算确实有数学意义,但结果不能存储为浮点数,即 sqrt(-1.0) 是 i,一个虚数不能存储在浮点数中的数字 仅供参考:msvc 为 C 生成的程序将 NaN 显示为nan(ind)
。
或-nan(ind)
。以上是关于IND和NAN号有啥区别的主要内容,如果未能解决你的问题,请参考以下文章