在gcc库中,在数学库中定义了一个NaN,用于初始化未定义的双变量等情况。但是,这个NaN没有在win32 math lib中定义,我想知道是否有任何方法可以使这个便携式?基本上,我只想给“double”类型变量一个默认值。
答案 0 :(得分:7)
C ++保证0.0/0.0
为NaN
,因此这是表达它的最简单方法。
请记住NaN != NaN
,因此(0.0/0.0) == (0.0/0.0)
实际上是假的。要测试NaN-ness,如果某个地方没有库is_nan
,只需检查某个候选x != x
的{{1}}。
答案 1 :(得分:5)
编写可移植C ++代码时,请尝试使用标准库<limits>
中定义的NaN。例如,对于double
类型,您可能希望使用std::numeric_limits<double>::quiet_NaN()
。