【发布时间】:2012-03-21 07:39:39
【问题描述】:
在 gcc 库中,数学库中定义了一个 NaN,用于初始化未定义的双精度变量等情况。但是,这个 NaN 没有在 win32 数学库中定义,我想知道是否有任何方法可以使这个可移植?基本上,我只是想给“double”类型变量一个默认值。
【问题讨论】:
在 gcc 库中,数学库中定义了一个 NaN,用于初始化未定义的双精度变量等情况。但是,这个 NaN 没有在 win32 数学库中定义,我想知道是否有任何方法可以使这个可移植?基本上,我只是想给“double”类型变量一个默认值。
【问题讨论】:
C++ 保证0.0/0.0 是NaN,所以这是最简单的表达方式。
记住NaN != NaN,所以(0.0/0.0) == (0.0/0.0)实际上是假的。要测试 NaN 性,如果您在某处没有库 is_nan,只需检查 x != x 的某个候选 double x。
【讨论】:
在编写可移植 C++ 代码时,请尝试使用标准库 <limits> 中定义的 NaN。例如,对于 double 类型,您可能希望使用 std::numeric_limits<double>::quiet_NaN()。
【讨论】: