【问题标题】:What is the difference between IND and NAN numbersIND和NAN号有什么区别
【发布时间】:2013-02-23 16:01:18
【问题描述】:

NAN 值表示非数字,IND 值表示不确定数字。但这两者有什么区别。我们如何在 c++ 中表示两者。

【问题讨论】:

  • IND?还是INF? INF 是“无限”的标准。

标签: c++ nan infinity


【解决方案1】:

但这两者有什么区别。

它们是同一个东西。一些平台选择将非数字显示为NaN 的某个变体,而其他平台选择将其显示为IND 的某个变体。

我们如何在 c++ 中同时表示两者。

std::numeric_limits<double>::quiet_NaN()(或floatlong 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)
猜你喜欢
  • 1970-01-01
  • 2013-07-23
  • 2016-03-19
  • 2023-03-17
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
相关资源
最近更新 更多